Django celery WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error
Django celery WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error
将 celery 作为生产 virtualenv 中的守护进程的最佳实践是什么?我在本地环境中使用以下内容,效果完美,接收任务按预期工作。但是在生产中总是停留在
WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error
我在本地和生产中使用以下配置:
/etc/default/celeryd:
CELERY_BIN="path/to/celery/bin"
CELERY_APP="myproj"
CELERYD_CHDIR="home/myuser/project/myproj"
CELERYD_OPTS="--time-limit=300 --concurrency=4"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_USER="myuser"
CELERYD_GROUP="myuser"
CELERY_CREATE_DIRS=1
/etc/init.d/celeryd:[celeryd]
包 & OS 版本信息:
- Ubuntu == 16.04.2
- 芹菜 == 4.1.0
- rabbitmq == 3.5.7
- django == 2.0.1
我在将 celery 作为守护程序 运行 时也使用了这些命令:
- sudo chown -R root:root /var/log/celery/
- sudo chown -R root:root /var/run/celery/
- sudo update-rc.d celeryd 默认值
- sudo 更新-rc.d celeryd 启用
- sudo /etc/init.d/celeryd 开始
这是我的 django settings.py 芹菜配置:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
CELERY_TASK_SERIALIZER = 'json'
需要专家建议才能使 celery 守护进程在生产 virtualenv 中正常工作。提前致谢!
除非您为 rabbitmq 创建了单独的虚拟主机和用户,否则请将 CELERY_BROKER_URL 设置为 amqp://guest@localhost//
此外,您应该将 /var/log/celery/
和 /var/run/celery/
的所有者设置为 "myuser",而不是 root,就像您在 celeryd 配置中设置的那样
由于
中出现内存不足错误,我收到了这个错误
/var/log/kern.log
我的一项任务中使用了 Tensorflow 运行,这需要额外的计算能力,但我的物理内存 (RAM) 不足以处理那么大的负载。我很奇怪除了 SigKill 9 错误之外没有登录 celery。但是内核日志帮助我修复了它。
我想这可能是 OOM 的症状。我在 Docker 容器中部署 Celery 后端 - "it worked on my machine" 但不在集群中。我为任务分配了更多的 ram,并且不再有问题。
将 celery 作为生产 virtualenv 中的守护进程的最佳实践是什么?我在本地环境中使用以下内容,效果完美,接收任务按预期工作。但是在生产中总是停留在
WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error
我在本地和生产中使用以下配置:
/etc/default/celeryd:
CELERY_BIN="path/to/celery/bin"
CELERY_APP="myproj"
CELERYD_CHDIR="home/myuser/project/myproj"
CELERYD_OPTS="--time-limit=300 --concurrency=4"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_USER="myuser"
CELERYD_GROUP="myuser"
CELERY_CREATE_DIRS=1
/etc/init.d/celeryd:[celeryd]
包 & OS 版本信息:
- Ubuntu == 16.04.2
- 芹菜 == 4.1.0
- rabbitmq == 3.5.7
- django == 2.0.1
我在将 celery 作为守护程序 运行 时也使用了这些命令:
- sudo chown -R root:root /var/log/celery/
- sudo chown -R root:root /var/run/celery/
- sudo update-rc.d celeryd 默认值
- sudo 更新-rc.d celeryd 启用
- sudo /etc/init.d/celeryd 开始
这是我的 django settings.py 芹菜配置:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
CELERY_TASK_SERIALIZER = 'json'
需要专家建议才能使 celery 守护进程在生产 virtualenv 中正常工作。提前致谢!
除非您为 rabbitmq 创建了单独的虚拟主机和用户,否则请将 CELERY_BROKER_URL 设置为 amqp://guest@localhost//
此外,您应该将 /var/log/celery/
和 /var/run/celery/
的所有者设置为 "myuser",而不是 root,就像您在 celeryd 配置中设置的那样
由于
中出现内存不足错误,我收到了这个错误/var/log/kern.log
我的一项任务中使用了 Tensorflow 运行,这需要额外的计算能力,但我的物理内存 (RAM) 不足以处理那么大的负载。我很奇怪除了 SigKill 9 错误之外没有登录 celery。但是内核日志帮助我修复了它。
我想这可能是 OOM 的症状。我在 Docker 容器中部署 Celery 后端 - "it worked on my machine" 但不在集群中。我为任务分配了更多的 ram,并且不再有问题。