我正在为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守护程序,以便考虑更改。
答案 0 :(得分:4)
我发现原因,看起来你必须在更新任务时重新启动celery守护程序,以便考虑更改。