私はdjango-celeryを使用しており、対話型シェルからタスクを呼び出すことができるように設定しました。タスクは完了し(セロリログで証明されています)、結果がセロリの出力に表示されます。
ただし、タスクを開始したシェルでタスクの結果を取得できないようです。
>>> from mymodule.tasks import testTask
>>> res = testTask.delay()
>>> testTask.ready()
False
@task
def testTask():
logger.info('LOGGER: start task')
time.sleep(10)
logger.info('LOGGER: stop task')
return 5
これは、時々発生する次のエラーが原因であると想定しています。
TxIsolationWarning: Polling results with transaction isolation level repeatable-read within the same transaction may give outdated results. Be sure to commit the transaction for each poll iteration.
私の質問は、トランザクションをコミットする方法と、これはどこで行われるのですか? また、ここでの問題は何ですか?Djangoがテーブルをロックしている間にセロリがmysqlから情報にアクセスしようとしていますか?
前もって感謝します、