芹菜:如何设置任务的状态

时间:2016-06-23 10:00:17

标签: python celery

我已经定义了这样的Celery任务:

@app.task()
def my_task():
    # Do things...

我使用Flower,所以我希望根据我创建的一些规则来查看任务的最终状态:

    if condition_1:
        return task_status_success
    elif condition_2:
        return task_status_fail

我该怎么做?

我看到有人做过这样的事情:

class AbstractTask(Task):
    abstract = True

    def __init__(self):
        self.last_error_log = ErrorLog(logger)
        Task.__init__(self)

    def _task_error(self, message):
        logger.error(message)
        self.update_state(state=states.FAILURE)
        raise Exception(message)

但是该方法似乎将类定义为Tasks,而不是函数。

有关如何手动设置定义为函数的Celery任务状态的任何帮助吗?

1 个答案:

答案 0 :(得分:1)

要使用您看到的使用抽象类的方法,您只需将类base传递给装饰器:

@app.task(base=AbstractClass, bind=True)
def my_task(self):
    pass

bind=True将允许您使用self来访问您班级的成员。