0

我有这样的任务:

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

4

2 回答 2

1

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

http://celeryq.org/docs/changelog.html

于 2011-02-20T10:30:35.890 回答
0

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

于 2011-02-20T04:38:17.737 回答