首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django celery WorkerLostError: Worker过早退出:信号9 (SIGKILL)错误

Django celery WorkerLostError: Worker过早退出:信号9 (SIGKILL)错误
EN

Stack Overflow用户
提问于 2018-05-23 17:38:07
回答 2查看 3.9K关注 0票数 1

在生产虚拟环境中将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 4.1.0

  • rabbitmq
  1. Ubuntu == == django == 3.5.7
  2. django == 2.0.1

当我让celery作为守护进程运行时,我也会使用这些命令:

更新更新sudo chown -R根目录:根/var/log/celery/

  • sudo chown更新根目录:根/var/run/celery/

  • sudo defaults

  • sudo -R -rc.d celeryd /var/run/celery/

  • sudo-R-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'

需要专家建议,使芹菜守护进程在生产中正常工作。提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-05-23 18:13:29

除非您为rabbitmq创建了单独的vhost和用户,否则请将CELERY_BROKER_URL设置为amqp://guest@localhost//

此外,应该将celeryd配置中设置的/var/log/celery//var/run/celery/的所有者设置为"myuser“,而不是根用户

票数 1
EN

Stack Overflow用户

发布于 2019-06-05 03:31:29

我想这可能是OOM的一种症状。我在Docker容器中部署了一个芹菜后端-“它在我的机器上工作”,但不是在集群中。我为任务分配了更多的内存,不再有这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50484883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档