4

Django Web アプリケーションと監視プロセスの 2 つのコンポーネントを持つシステムを開発しています。

モニター プロセスはどこかの TCP/IP サーバーに接続し、独自のプロトコルを使用してイベント通知を受け取ります。また、独自のプロトコルを使用して、サーバーにコマンドを送信することもできます。

モニターをデーモンとして実行したい。サーバーに接続し、着信イベントを継続的に監視します。イベントが到着するたびに、モニターはデータベースを更新します。Web アプリケーションは、データベースから現在の状態を取得します。

ただし、コマンドの送信に少しこだわっています。モニター サービスと通信するには、Django Web アプリが必要です。ここで推奨されているように、Pyro を使用できますが、システムの他の部分で既に使用しているため、Celery を使用したいと思います。

Celery ワーカーにモニター接続の管理Celery リクエストの処理の両方をさせるにはどうすればよいですか?

注: 独自のプロトコルの制限により、サーバーへの 2 つの接続を開くことができないため、1 つのプロセスでイベントを監視し、別のプロセスでコマンドを送信することはできません。

4

1 に答える 1

3

このユース ケースで本当にCelery を使用したい場合は、別のキューを定義し、すべてserver_monitorのサーバー モニター タスクをそのキューにルーティングしたほうがよいと思います。ここで、サーバーへの複数の接続を避けるために、ワーカーを で実行します-c 1

また、サーバー監視イベントと Celery リクエストを処理できるようにしたいので、新しいワーカーに両方のキューを提供するように命令します-q celery,server_monitor。このように、ワーカーは両方のタイプのリクエストを処理しますが、celeryキューのトラフィックが多い場合、キューからのリクエストの処理に時間がかかる場合があることに注意してくださいserver_monitor

于 2013-10-05T08:55:44.063 に答える