私はDjangoプロジェクトのセロリーを使い始めています。現地での開発のために、私はdjceleryとdjkombu(データベース転送)を使って、これらの指示書に従ってhttp://ask.github.com/celery/tutorials/otherqueues.html#django-databaseを設定しましたが、プロダクションサーバでrabbitmqを使用する予定です。ハングアップするセラーの作業員を診断するには
私はそれが動作することを発見しましたが、1人または複数のワーカーがランダムにハングアップすることがありました。従業員はさまざまなタスクを実行するため、特定のタスクが無限ループに入っていることはありません。私がセロリを閉めようとするとき、私は通常、1人を除いてすべての労働者が出て行くのを見ます。作業者の前と後の両方で、celeryctlを使用して作業者に関する情報を取得しようとしましたが、celeryctlは常に「エラー:時間制約内でノードが応答しませんでした。 」というメッセージで失敗します。私も労働者http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workersを検査しようとしましたが、すべてのメソッドは何も返しません。
ワーカーのハングアップを診断する方法に関するアイデアや、参考になるものがあります。
まず実行セロリを。 セロリを再起動したり停止したりすると、タスクを実行しているPoolworkerはタスクが終了するまで再開されませんが、これは通常の動作です。あなたの仕事が無作為にブロックされていることはもちろんのことですが、もちろんです。これは、ウサギのMQで私に起こったことはありません、それは可能です可能性がありますDBのロックや接続に関連して..あなたはMYSQLのInnoDBを使用している?私は強くdb輸送の代わりにブローカーを提案します –
あなたはどのバージョンを実行していますか? – asksol