通知工人关闭的芹菜任务

时间:2011-11-15 15:20:05

标签: python rabbitmq celery django-celery

我正在使用芹菜2.4.1与python 2.6,rabbitmq后端和django。如果工人关闭,我希望我的任务能够正确清理。据我所知,你无法提供任务析构函数,所以我试着勾住worker_shutdown信号。

注意:AbortableTask仅适用于数据库后端,所以我无法使用它。

from celery.signals import worker_shutdown

@task
def mytask(*args)

  obj = DoStuff()

  def shutdown_hook(*args):
     print "Worker shutting down"
     # cleanup nicely
     obj.stop()

  worker_shutdown.connect(shutdown_hook)

  # blocking call that monitors a network connection
  obj.stuff()

但是,永远不会调用shutdown hook。 Ctrl-C'ing工作人员不会杀死任务,我必须从shell手动杀死它。

因此,如果这不是正确的方法,我该如何让任务正常关闭?

0 个答案:

没有答案