0

Django-Celery +rabbitmqを使用していくつかの非同期タスクを実行し、キュー「sendmail」を定義してメール送信タスクを実行し、メール送信は特定のタスクによってトリガーされます(このタスクには独自のキューがあります)が、後で問題が発生しました特定のタスクが完了した後、メールが一度に送信される場合もあれば、5 ~ 20 分かかる場合もあります。原因を知りたいです。

Django-celery は、task.delay() を呼び出すときに、タスク名とパラメーターを rabbitmq へのメッセージとしてパッケージ化します。

メッセージがいつrabbitmqに送られるかを知りたいのですが、Web管理ツールを使用すると、合計メッセージしか表示されず、すべてのメッセージの詳細、特にメッセージが到達した時間は表示されません。Django-celery ログは、ブローカー時間と実行タスク時間から取得した作業のみを確認できます。関連するすべてのタイムポイントを知り、メインがどのステップで消費したかを確認したいと考えています。

4

1 に答える 1

1

Django-Celery は (私が信じている) タスクごとにタスク データを報告します。データベースを同期すると、管理者からアクセスできる一連の監視テーブルが作成されます。ただし、これらのタスクをこれらのテーブルに記録するには、celerycam プログラムを django コンテキスト (python ./manage.py celerycam) で実行する必要があります。celerycam プログラムは、約 1 秒ごと (デフォルト) にタスクの「スナップショット」を取り、それらに関する情報を記録します。監視のためのもう 1 つの便利なツールは、celerymon プログラムです (これも django コンテキストで実行する必要があります)。これは、発生したタスクに関するリアルタイムの情報を報告するコマンド ライン ncurses プログラムです。最後に、rabbitmqctrl には、監視に役立つオプションが多数あります。

これはドキュメントで特に役立つページです: http://celery.github.com/celery/userguide/monitoring.html

とにかく、これは、セロリを使用するときに自分のタスクを監視するために使用するものです.

于 2012-06-24T16:30:22.490 に答える