目前我们在应用程序中使用了大量的芹菜任务,我们有一个例外,可能会引发大量任务。
我们可以在每个任务中创建一个try和catch块并相应地处理这个特定的异常,但是我正在寻找一种方法来捕获任何任务中的异常(如中间件行),以便于维护。
任何人都可以提供建议吗?
我们使用以下版本:
celery==3.1.18
django-celery==3.1.16
Django==1.6.5
答案 0 :(得分:2)
这可以使用基本抽象任务处理程序完成。特别是对于异常,有一个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