【问题标题】:Celery can't get result from given task芹菜无法从给定任务中获得结果
【发布时间】:2015-05-16 12:21:03
【问题描述】:

我尝试用 rabbitmq 配置 celery。服务器工作正常,我的工作人员收到任务并返回成功的结果,但通信(?)失败。我正在遵循 celery doc 的第一步。我启动了任务工作者并创建了文件tasks.py。我的连接:

app = Celery('tasks', backend='amqp', broker='amqp://')

工作人员内部的日志(正确):

[2015-03-13 21:00:46,146: INFO/MainProcess] Task tasks.add[ee0fd026-d08e-4380-b010-9bbe65cb8b8f] succeeded in 0.00891784499981s: 4

但无法获得结果,状态为待处理

add_task = tasks.add.delay(2,2)

In [4]: add_task.status
Out[4]: 'PENDING'

【问题讨论】:

    标签: python celery


    【解决方案1】:

    add_task.status 在您排队后立即获取任务的状态(请记住,您使用的是.delay,而不是立即执行它),即PENDING

    要从后端获取任务的状态,请使用AsyncResult

    res = tasks.add.AsyncResult(add_task.task_id)
    

    这将起作用,除非您已将后端设置为忽略任务结果。

    【讨论】:

    • 没问题。如果它解决了您的问题,请标记答案。
    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2014-07-14
    相关资源
    最近更新 更多