カスタム状態(およびいくつかのデータですが、最初にカスタム状態から始めましょう)を設定したい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
私はまったく同じことをします(メタを除いて、私も成功しませんでした)ので、うまくいくはずです。
更新:変更が考慮されるように、タスクを更新するたびにセロリデーモンを再起動する必要があるようです。