【问题标题】:Upstart job to run Celery doesn't stop all the worker processes运行 Celery 的新贵工作不会停止所有工作进程
【发布时间】:2012-10-17 12:48:05
【问题描述】:

我写了一个 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

【问题讨论】:

    标签: python django ubuntu celery upstart


    【解决方案1】:

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

    【讨论】:

    • 这似乎不是问题,因为我已经从 RabbitMQ 检查了我的任务队列并且什么都没有。由于其他一些开发工作,我最近根本没有排队任务。我已经升级到 Celery 3.x.x,我希望这能解决这个问题。看看我的编辑:我认为这是一个错误。
    【解决方案2】:

    我无法弄清楚这一点,但这似乎是我的旧 celery 版本的问题。我在他们的问题跟踪器中发现了这个问题,我猜它指向了同一个问题:

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      相关资源
      最近更新 更多