问题描述
我想在 celery 任务失败时将结果设置为该任务。我希望能够根据处理任务时发生的错误类型来显示定制的消息。正如我所检查的,将任务定义为失败的唯一方法是在任务期间引发异常。如果任务到达最后的代码行,状态总是“成功”,即使我尝试手动更改它。我的结果后端正在使用 Redis 我想过在错误回调上查询任务 id,但这样做似乎是错误的。这是我调用任务的方式:
run_long_process.apply_async(args=(instance.id,),link=commit_instances.s(),link_error=rollback_instances.s(),)
任务:
@shared_task(bind=True)
def run_long_process(self,some_parm):
.
.
.
if some_condition:
// I tried here to do something like self.update_state(state='FAILURE') without
// raising the exception
raise CustomException("Error")
return {some_response}
@shared_task
def rollback_instances(request,exc,traceback):
//I want to set a message or something and when I query the task id I get the result with
//state FAILURE
doSomethingElse()
@shared_task
def commit_instances(*args,**kwargs):
doSomething()
如果有的话,是否有 Celeryiesque 的方法来实现这一点。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)