在生产virtualenv中将芹菜作为守护进程运行的最佳做法是什么?我在本地环境中使用以下内容,它完美地工作并且接收任务按预期工作。但在生产中始终坚持
WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error
我在本地和生产中使用以下配置:
的/ etc /默认/ 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: [not for negotiating a change of password]
套餐&操作系统版本信息:
我也使用这些命令,同时让芹菜作为守护进程运行:
以下是我对芹菜的django settings.py 配置:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
CELERY_TASK_SERIALIZER = 'json'
需要专家建议让芹菜守护进程在生产virtualenv中正常工作。提前谢谢!
答案 0 :(得分:0)
除非你创建了一个单独的vhost&用户为rabbitmq,将CELERY_BROKER_URL设置为amqp://guest@localhost//
此外,您应该将/var/log/celery/
和/var/run/celery/
的所有者设置为“myuser”,而不是root用户,因为您已经在celeryd配置中设置了
答案 1 :(得分:0)
由于
中捕获的内存不足错误导致此错误/var/log/kern.log
我在一个我的任务中运行Tensorflow,这需要额外的计算能力,但我的物理内存(RAM)不足以处理那么多的负载。我很奇怪除了SigKill 9错误之外没有芹菜登录。但内核日志帮助我解决了这个问题。
答案 2 :(得分:0)
我想这可能是OOM的症状。我在Docker容器中部署了Celery后端-“它在我的机器上工作”,但不在集群中。我为任务分配了更多的内存,不再遇到问题。