用于芹菜任务的中间件

时间:2015-08-21 13:06:27

标签: django celery

目前我们在应用程序中使用了大量的芹菜任务,我们有一个例外,可能会引发大量任务。

我们可以在每个任务中创建一个try和catch块并相应地处理这个特定的异常,但是我正在寻找一种方法来捕获任何任务中的异常(如中间件行),以便于维护。

任何人都可以提供建议吗?

我们使用以下版本:

celery==3.1.18
django-celery==3.1.16
Django==1.6.5

1 个答案:

答案 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