当前,我们在应用程序中使用了大量芹菜任务,但有一个例外可能会引发大量任务。
我们可以在每个任务中创建一个try and catch块,并相应地处理此特定异常,但我们正在寻找一种方法来捕获任何任务(例如中间件产品)中的任何异常,以简化维护。
有人可以建议吗?
我们正在使用以下版本:
celery==3.1.18
django-celery==3.1.16
Django==1.6.5
可以使用基本抽象任务处理程序来完成。特别是对于异常,有一个on_failure
处理程序。
from celery import Task
class MyBaseTask(Task):
abstract = True
def on_failure(self, exc, task_id, args, kwargs, einfo):
# Task failed. What do you want to do?
print('Task raised an exception: {}'.format(exc)
@app.task(base=MyBaseTask)
def my_task():
# Your task code
有关可用的处理程序以及传递给每个处理程序的参数的更多信息,请参见Celery文档。http: //docs.celeryproject.org/en/latest/userguide/tasks.html#abstract-classes
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句