4

カスタム状態(およびいくつかのデータですが、最初にカスタム状態から始めましょう)を設定したい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

PROGRESS であるはずなのに、なぜ PENDING なのかわかりません。何か案が?

私はすでにドキュメントを見てきました。関連するリンクは次のとおりです。http://docs.celeryproject.org/en/latest/userguide/tasks.html#custom-states

私はまったく同じことをします(メタを除いて、私も成功しませんでした)ので、うまくいくはずです。

更新:変更が考慮されるように、タスクを更新するたびにセロリデーモンを再起動する必要があるようです。

4

1 に答える 1

4

変更が考慮されるように、タスクを更新するたびにセロリデーモンを再起動する必要があるようです。

于 2012-06-01T18:25:09.170 に答える