【发布时间】:2011-12-02 02:34:36
【问题描述】:
在某些情况下,我想让 celery 任务在该任务中失败。我尝试了以下方法:
from celery.task import task
from celery import states
@task()
def run_simulation():
if some_condition:
run_simulation.update_state(state=states.FAILURE)
return False
但是,任务仍然报告成功:
任务 sim.tasks.run_simulation[9235e3a7-c6d2-4219-bbc7-acf65c816e65] 1.17847704887s成功:False
似乎只能在任务运行时修改状态并且一旦完成 - celery 将状态更改为它认为是结果的任何内容(请参阅this question)。有什么方法可以在不通过引发异常而使任务失败的情况下让 celery 返回任务失败的情况?
【问题讨论】:
-
您是否尝试从代码内部引发异常?
-
@hymloth 引发异常确实会导致任务失败,其中包括每次发生这种情况时都向我发送电子邮件——这是我想避免的。抱歉不清楚,我现在已经改变了问题。
标签: celery celery-task