我有这样的任务:
@task
def test():
time.sleep(10)
test.update_state(state="PROGRESS")
time.sleep(10)
return "done"
我然后运行:
>>> from celery.execute import send_task
>>> t = send_task("testcelery.test")
>>> t.state
'PENDING'
>>> t.state
'PROGRESS'
我可以在工人中看到任务已经完成:
[2011-02-19 20:18:43,851:INFO / MainProcess]任务testcelery.test [7598b170-2877-4d76-89a0-9bcc4c9f877e]成功完成20.0225799084s:'done'
但是t.state永远不会从PROGRESS变为SUCCESS。我做错了什么?
答案 0 :(得分:1)
您应该升级到Celery 2.2.4(昨天发布),因为它修复了导致此问题的错误。
答案 1 :(得分:0)
在我看来,像CELERY_IGNORE_RESULT设置会导致此行为。什么是t.ignore_result?如果是,则更改它或更改默认值。如果您想要始终检查结果,那么更改CELERY_IGNORE_RESULT对我来说更有意义。但是在每项任务上设置它会使你的意图更加明显。