使用自定义状态时任务状态不更新

时间:2011-02-20 01:36:44

标签: python celery

我有这样的任务:

@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。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您应该升级到Celery 2.2.4(昨天发布),因为它修复了导致此问题的错误。

请参阅http://celeryq.org/docs/changelog.html

答案 1 :(得分:0)

在我看来,像CELERY_IGNORE_RESULT设置会导致此行为。什么是t.ignore_result?如果是,则更改它或更改默认值。如果您想要始终检查结果,那么更改CELERY_IGNORE_RESULT对我来说更有意义。但是在每项任务上设置它会使你的意图更加明显。