Djangocelery 工人丢失错误:工人过早退出:信号9(SIGKILL)错误

wmomyfyw  于 2023-03-09  发布在  Go
关注(0)|答案(4)|浏览(130)

在生产virtualenv中运行celepie作为守护进程的最佳实践是什么?我在本地环境中使用了以下方法,该方法运行良好,接收任务也按预期工作。但在生产环境中,该方法总是停留在

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/初始化d/celery 素d:[celeryd]
软件包和操作系统版本信息:

  1. Ubuntu == 16.04.2
    1.celery == 4.1.0
    1.家兔mq == 3.5.7
    1.迪昂戈== 2.0.1
    我还使用了这些命令,同时使celery 作为守护进程运行:
    1.根:根/var/log/celery /
  2. sudo chown -R根:根/变量/运行/celery /
  3. sudo更新-rc.d celeryd默认值
  4. sudo更新-rc.d celeryd已启用
  5. sudo /etc/初始化.d/celeryd启动
    下面是我的djangosettings.pycelery 配置:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
CELERY_TASK_SERIALIZER = 'json'

需要Maven的建议,使celery 守护进程在生产虚拟环境中正常工作。提前感谢!

mlmc2os5

mlmc2os51#

除非您已经为rabbitmq创建了单独的vhost & user,否则请将CELERY_BROKER_URL设置为amqp://guest@localhost//
此外,您应该将/var/log/celery//var/run/celery/的所有者设置为“myuser”,而不是root,就像您在celeryd配置中设置的那样

nr7wwzry

nr7wwzry2#

我猜这可能是OOM的症状。我当时在Docker容器中部署Celery后端-“它在我的机器上工作”,但在集群中不工作。我为任务分配了更多RAM,不再有这个问题。

aiazj4mn

aiazj4mn3#

我得到这个错误,由于内存不足错误捕获
/var/log/kern.log
我在一个任务中运行了Tensorflow,这需要额外的计算能力,但我的物理内存(RAM)不足以处理这么多负载。我奇怪的是,除了SigKill 9错误外,celery 中没有日志。但内核日志帮助我修复了它。

j8ag8udp

j8ag8udp4#

在docker的情况下,我只是分配了更多的资源,它的工作。

相关问题