我已经定义了这样的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任务状态的任何帮助吗?
答案 0 :(得分:1)
要使用您看到的使用抽象类的方法,您只需将类base
传递给装饰器:
@app.task(base=AbstractClass, bind=True)
def my_task(self):
pass
bind=True
将允许您使用self
来访问您班级的成员。