我有芹菜4.1.0,django 1.11.11,rabbitMQ和Redis的结果。
@shared_task(bind=True)
def one_task(self):
try:
...
some db stuff here
...
except BaseException as error:
self.update_state(state='FAILURE',
meta={'notes': 'some notes'})
logger.error('Error Message ', exc_info=True,
extra={'error': error})
所以,当我的代码运行到除了块self.update_state不起作用但记录器工作... 实际上,我不确定是否
@shared_task(bin=True)
没错......
我想要做的是捕获我的python代码的异常(通过try& except blocks),更改状态并手动终止任务。 那么,有什么建议/帮助吗?
答案 0 :(得分:0)
Celery将在完成的每项任务中设置成功状态,而不会抛出异常。而且你正在抓住那个例外,而不会把它抛回去。
不幸的是,投掷它将无济于事,因为芹菜会将任务置于失败状态并带有自己的错误消息。
只有该问题的解决方案是在此任务上设置ignore_result=True
选项,因此芹菜不会管理此任务的状态,但芹菜文档表明它可能有其他副作用。