使用自定义状态时任务状态未更新
我有一个这样的任务:
@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.0225799084 秒内成功完成: '完成'
但是 t.state 的状态从进行中(PROGRESS)一直没有变成成功(SUCCESS)。我哪里做错了?
2 个回答
0
我觉得设置了 CELERY_IGNORE_RESULT 这个选项会导致这种情况。那什么是 t.ignore_result 呢?如果它是对的,那就要么改一下它,要么改一下默认设置。如果你想每次都查看结果,那改变 CELERY_IGNORE_RESULT 这个选项对我来说更合理。不过,如果每个任务都设置这个选项,那你的意图就会更清楚了。
1
你应该把Celery升级到2.2.4版本(昨天发布的),因为这个版本修复了导致这个问题的错误。