无法获得国家和地区远程芹菜工人的结果

时间:2017-09-05 15:26:26

标签: python redis celery celery-task

我的架构:

  • 主机:

    RabbitMQ 3.6.5(经纪人)

    Redis(后端)

    芹菜默认工作者

    网络服务器应用程序

  • 从动MACHINE1:

    芹菜默认工作者

  • 从属机2:

    芹菜默认工作者

我通过Webserver应用程序(从主机)触发任务,例如: task_id = task1.delay(1,2,3).id

我有一个用于检索任务状态/结果的API(同样,来自主机):

result = task1.AsyncResult(task_id, app=celery_app)
    if result.ready():
        return result.get()

    return result.state 

其中celery_app的定义与在工作人员中完全相同..(经纪人,后端......)

问题:当主机的默认工作人员使用时,可以检索任务的状态/结果,但是当奴隶机工人消耗时我不能似乎检索到正确的状态/结果:( result.state == PENDING永远)。

从主机上的Flower我可以检索到正确的状态/结果(SUCCESS +实际结果)。

此外,结果显示在Redis后端SUCCESS

redis-cli -h master-machine -p 6379 
127.0.0.1:6379> get "celery-task-meta-74de04de-0d4e-45bc-977d-16caab047eed"
    "{\"status\": \"SUCCESS\", \"traceback\": null, \"result\": {123}, \"task_id\": \"74de04de-0d4e-45bc-977d-16caab047eed\", \"children\": []}"

知道为什么会这样吗?我希望能够检索任务'状态/结果,包括在从机上运行的任务。

0 个答案:

没有答案