在 Celery 任务失败时设置结果

问题描述

我想在 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...