何らかの理由で、Celery で新しいタスクを作成して実行すると、結果を返す際に問題が発生します。最初のタスクは完全に返されますが、後続のすべてのタスクの結果は常に保留中です。Celery ログを確認したところ、エラーなしで正しい結果が得られましたが、それを返すことができません。
それが役立つ場合は、バックエンドとして rabbitmq を実行しています。
バックエンドを明示的に指定する必要があっただけです。
追加:
CELERY_RESULT_BACKEND = "amqp"
私の設定ファイルにすべてを修正するように見えました。
'amqp'バックエンドを追加しても同じ問題が発生します。
これが私のセロリ設定ファイルです:
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"
CELERY_RESULT_BACKEND = "amqp"
CELERY_AMQP_TASK_RESULT_EXPIRES = 18000 # 5 hours.
CELERY_IMPORTS = ("test", )
1回目は成功し、2回目はハングした私のシェル。しばらくしてから、メソッドを再度呼び出すと機能します。このパターンは繰り返され続けます。
>>> r = test.add.delay(4, 4)
>>> r.get()
8
>>> r = test.add.delay(4, 4)
>>> r.get()
^C <---------- it was hung here forever, I had to press ^C
>>> r = test.add.delay(4, 4)
>>> r.get()
8