【发布时间】:2011-12-29 15:11:22
【问题描述】:
我将 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()
但是,关闭挂钩永远不会被调用。 Ctrl-C'ing 工人不会杀死任务,我必须从 shell 手动杀死它。
如果这不是正确的解决方法,我该如何让任务正常关闭?
【问题讨论】:
标签: python rabbitmq celery django-celery