セロリがrabbitmqと連携して非同期タスクを実行すると、rabbitmq内のメッセージの数が常に増加していることがわかりますが、これらのメッセージは実際にはタスクによって処理されています。
rabbimtq に付属するバックエンドを確認すると、キューに登録されたメッセージの準備完了数と合計数が 5,000 を超え、未確認の値が 0 であることがわかりました。ただし、実際に動作させると、unacknowledged の値は変化しますが、最終的には 0 になります。
celery の設定は特別なことはなく、以下の内容を設定するだけです。
CELERY_IMPORTS = ('testtasks',)
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'
次に、システム リソースを見てください。erl プロセス メモリは比較的大きく、おそらく 300 M 以上を使用しています。
セロリの設定に何か問題がありますか?
rabbitmq をバージョン 3.3 以降にアップグレードするだけで解決されました。
以前はrabbitmqバージョン3.1を使用していましたが、セロリはバージョン3.1です
問題を解決する実際の方法は、次のようにタスクにignore_result=True属性を追加することです
@app.task(ignore_result=True)