python - Django Celery OSError:无法获得平均负载
问题描述
我使用 Django、Celery、Celery-beat 和 Supervisor 创建了一个后端应用程序。我遇到一个问题,几个小时后 Celery 完全停止工作并出现以下错误。我在 Github 上检查了这个链接,上面说文件描述符可能有问题。我确实运行了以下命令
# cat /proc/sys/fs/file-max
1576989
下面是完整的堆栈跟踪。
[2021-09-17 23:01:01,388: WARNING/MainProcess] Traceback (most recent call last):
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/hubs/hub.py", line 476, in fire_timers
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/hubs/timer.py", line 59, in __call__
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/greenthread.py", line 224, in main
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/greenthread.py", line 240, in _resolve_links
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/celery/concurrency/eventlet.py", line 61, in _entry_exit
g.wait()
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/greenthread.py", line 181, in wait
[2021-09-17 23:01:01,388: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/event.py", line 132, in wait
[2021-09-17 23:01:01,389: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/eventlet/greenthread.py", line 221, in main
[2021-09-17 23:01:01,389: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/kombu/asynchronous/timer.py", line 65, in __call__
[2021-09-17 23:01:01,389: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/kombu/asynchronous/timer.py", line 127, in _reschedules
[2021-09-17 23:01:01,389: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/celery/worker/heartbeat.py", line 45, in _send
[2021-09-17 23:01:01,389: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/celery/utils/sysinfo.py", line 23, in load_average
[2021-09-17 23:01:01,389: WARNING/MainProcess] File "/opt/myProject/env/lib64/python3.8/site-packages/celery/utils/sysinfo.py", line 13, in _load_average
[2021-09-17 23:01:01,389: WARNING/MainProcess] OSError: Load averages are unobtainable
下面是 Celery 工人的主管配置
[program:celery_worker]
command=/opt/myProject/env/bin/celery -A src worker -l debug -Ofair --purge -P eventlet -c 50 — without-gossip — without-mingle — without-heartbeat
environment=PATH="/opt/myProject/env/bin:%(ENV_PATH)s"
directory=/opt/myProject/myProject/
stdout_logfile=/var/log/myProject/celery_worker/celery_worker.log
stderr_logfile=/var/log/myProject/celery_worker/celery_worker.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
stopasgroup=true
priority=200
numprocs=1
user=root
以下是 Django Celery 的设置
# celery setting.
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERY_IMPORTS = ['src.tasks','src.celery_app']
CELERY_TASK_RESULT_EXPIRES = 3600
CELERY_CACHE_BACKEND = 'default'
CELERY_MAX_TASKS_PER_CHILD = 10
CELERY_RESULT_EXPIRES = 1800
CELERY_WORKER_MAX_MEMORY_PER_CHILD = 4096
谁能分享我如何解决这个问题的见解?
解决方案
推荐阅读
- javascript - 调整多边形上的线条位置
- python - Pandas DataFrame KeyError 1
- angular-cli - 如何防止 Angular 在更改时重新加载我的应用程序但仍允许它保存?
- excel - 如何阻止 Excel VBA 重命名不相关模块和方法中的变量和参数?
- javascript - 在 React JS 中添加仅适用于应用程序的自定义后退按钮
- linux - Zenity:如何创建用户并更改其密码?
- swift - UNUserNotifications 方法“requestAuthorization”在 macOS Catalyst 上不显示对话
- reactjs - 我的 GIF 没有显示在子组件中
- javascript - 如何每次在 JavaScript 中创建新的唯一 ID?
- javascript - 使用基于 jQuery 的功能列名称在 HTML ajax 响应中创建表?