4

我正在为 django-celery 编写一个小测试任务,我想在其中设置自定义状态(和一些数据,但让我们先从自定义状态开始)。

我使用 django 作为消息传递后端。我的python版本是2.6。

这是tasks.py的内容

import time
from djcelery import celery

@celery.task
def generate():
    generate.update_state(state="PROGRESS")
    time.sleep(10)
    return True

当我试一试时,会发生以下情况:

>>> import tasks
>>> result = tasks.generate.delay()
>>> result
<AsyncResult: f72574aa-f8c5-49dc-89d4-47d2012a4d6d>

# status and state are the same, but just to make sure
>>> result.status
u'PENDING'
>>> result.state
u'PENDING'
>>> result.result
# empty, as in None

# wait a few seconds
>>> result.status
u'SUCCESS'
>>> result.state
u'SUCCESS'
>>> result.result
True

我无法弄清楚为什么状态应该是 PENDING 而它应该是 PROGRESS。任何的想法?

我已经查看了文档,这里是相关链接:http ://docs.celeryproject.org/en/latest/userguide/tasks.html#custom-states

我做了完全相同的事情(减去元数据,但我也尝试过但没有成功),所以它应该可以工作。

更新:我发现了原因,看起来你必须在更新任务时重新启动 celery 守护程序,以便将更改考虑在内。

4

1 回答 1

4

我发现了原因,看起来您必须在更新任务时重新启动 celery 守护程序,以便将更改考虑在内。

于 2012-06-01T18:25:09.170 回答