【发布时间】:2012-09-21 08:09:48
【问题描述】:
我在我的应用程序中使用celery 来运行定期任务。让我们看下面的简单示例
from myqueue import Queue
@perodic_task(run_every=timedelta(minutes=1))
def process_queue():
queue = Queue()
uid, questions = queue.pop()
if uid is None:
return
job = group(do_stuff(q) for q in questions)
job.apply_async()
def do_stuff(question):
try:
...
except:
...
raise
正如您在上面的示例中看到的,我使用celery 来运行异步任务,但是(因为它是一个队列)我需要在do_stuff 或queue.ack(uid) 出现异常的情况下执行queue.fail(uid) 否则。在这种情况下,在这两种情况下从我的任务中获得一些回调是非常清楚和有用的 - on_failure 和 on_success。
我看到了一些 documentation,但从未见过将回调与 apply_async 一起使用的做法。有可能吗?
【问题讨论】: