在生产虚拟环境中将celery作为守护进程运行的最佳实践是什么?我在本地环境中使用以下代码,它可以完美地工作,并且接收任务也能达到预期效果。但在生产中总是停留在
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]
包和操作系统版本信息:
16.04.2
当我让celery作为守护进程运行时,我也会使用这些命令:
更新更新sudo chown -R根目录:根/var/log/celery/
下面是我对芹菜的django settings.py配置:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
CELERY_TASK_SERIALIZER = 'json'
需要专家建议,使芹菜守护进程在生产中正常工作。提前感谢!
发布于 2018-05-23 18:13:29
除非您为rabbitmq创建了单独的vhost和用户,否则请将CELERY_BROKER_URL设置为amqp://guest@localhost//
此外,应该将celeryd配置中设置的/var/log/celery/
和/var/run/celery/
的所有者设置为"myuser“,而不是根用户
发布于 2019-06-05 03:31:29
我想这可能是OOM的一种症状。我在Docker容器中部署了一个芹菜后端-“它在我的机器上工作”,但不是在集群中。我为任务分配了更多的内存,不再有这个问题。
https://stackoverflow.com/questions/50484883
复制相似问题