我想优雅地退出芹菜任务(即不是通过调用revoke(celery_task_id, terminate=True)
)。我想我会向设置标志的任务发送一条消息,以便任务函数可以返回。与任务沟通的最佳方式是什么?
问问题
11875 次
2 回答
11
您也可以使用AbortableTask
. 我认为这是优雅地停止任务的最佳方式。
http://docs.celeryproject.org/en/latest/reference/celery.contrib.abortable.html
from celery.contrib.abortable import AbortableTask
from proj.celery import app
@app.task(bind=True, base=AbortableTask)
def abortable_task(self):
while not self.is_aborted():
print 'I am running'
print 'I was aborted!'
如果您将 id 任务保存在某个地方,您可以随时调用它。
from celery.contrib.abortable import AbortableAsyncResult
abortable_task = AbortableAsyncResult(task_id)
abortable_task.abort()
于 2016-05-09T13:46:02.110 回答