Joh*_*ohn 6 django daemon celery django-celery start-stop-daemon
我们的芹菜守护进程非常脆弱.我们使用结构部署脚本在每次推送更改时重新启动守护程序,但由于某种原因,这会导致大量问题.
每当运行部署脚本时,芹菜进程都会处于某种伪死状态.他们(不幸的是)仍然会从rabbitmq中消耗任务,但他们实际上并没有做任何事情.令人困惑的简短检查表明在这种状态下一切似乎都很"好",celeryctl状态显示一个节点在线并且ps aux | grep芹菜显示2个运行过程.
但是,尝试运行/etc/init.d/celeryd手动停止会导致以下错误:
start-stop-daemon: warning: failed to kill 30360: No such process
Run Code Online (Sandbox Code Playgroud)
虽然在这种状态下尝试运行celeryd start似乎工作正常,但实际上什么也没做.解决问题的唯一方法是手动终止正在运行的芹菜进程,然后再次启动它们.
有什么想法在这里发生了什么?我们也没有完全确认,但我们认为问题也会在几天之后(当前没有活动,这是一个测试服务器)在没有部署的情况下自行开发.
我不能说我知道什么是困扰你的设置,但我总是使用supervisord来运行芹菜 - 也许问题与暴发户有关?无论如何,我从来没有经历过在监督下运行的芹菜.
为了更好地衡量,这里是芹菜的示例主管配置:
[program:celeryd]
directory=/path/to/project/
command=/path/to/project/venv/bin/python manage.py celeryd -l INFO
user=nobody
autostart=true
autorestart=true
startsecs=10
numprocs=1
stdout_logfile=/var/log/sites/foo/celeryd_stdout.log
stderr_logfile=/var/log/sites/foo/celeryd_stderr.log
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
Run Code Online (Sandbox Code Playgroud)
在我的fab脚本中重新启动celeryd就像发布一样简单sudo supervisorctl restart celeryd.
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |