运行Celery的Upstart作业不会停止所有工作进程

时间:2012-10-17 12:48:06

标签: python django ubuntu celery upstart

我已经编写了一个Upstart作业来在我的Ubuntu服务器上运行celery。这是我的配置文件celeryd.conf

# celeryd - runs the celery daemon
#
# This task is run on startup to run the celery daemon

description "run celery daemon"

start on startup
expect fork
respawn

exec su - trakklr -c "/app/trakklr/src/trakklr celeryd --events --beat --loglevel=debug --settings=production"

当我执行sudo service celeryd start时,celeryd进程就会正常启动,所有x个工作进程都会正常启动。

..但是当我执行sudo service celeryd stop时,它会停止大部分进程,但会暂停一些进程。

为什么会这样?我正在使用Celery 2.5.3。


以下是Github跟踪器的问题。

https://github.com/celery/django-celery/issues/142

2 个答案:

答案 0 :(得分:0)

我仍然使用init.d来运行芹菜,所以这可能不适用。考虑到这一点,停止芹菜服务将TERM信号发送给芹菜。这告诉工人不要接受新任务,但它不会终止现有任务。因此,根据您执行任务所需的时间,您可能会在告知芹菜停止后一段时间内看到任务。最终,除非你遇到其他问题,否则他们都会关闭。

答案 1 :(得分:0)

我无法解决这个问题,但这似乎与我的旧芹菜版本有关。我发现他们的问题跟踪器上提到了这个问题,我想它指出了同样的问题:

https://github.com/celery/django-celery/issues/142

我将芹菜和django-celery升级到3.x.x版本,这个问题就消失了。