編集:これを python-list と tutor-list に投稿しましたが、応答はありませんでした。アドバイスをいただければ幸いです。
さまざまなタイプのイベント (AMQP メッセージ、サブプロセスの解析済み出力、HTTP 要求) に対してコールバックを実行できる並行デーモンを作成するための最良の方法は何ですか?
私はtwisted、組み込みのスレッド化モジュール、およびgreenletを検討しています。私は並行プログラミングと Python プログラミング全般 (以前はデータ分析主導の手続き型プログラマー) に非常に慣れていなかったことを認めなければなりません。スレッド化/並行プログラミングに関するリソース (特にデーモン...単一のタスクのマルチスレッド化だけでなく) は大歓迎です。
ありがとう!
詳細:
1) AMQP メッセージング キューをリッスンし、メッセージが到着したときにコールバックを実行します。例: 起動直後、デーモンは継続的にOpenstack Notifications メッセージング キューをリッスンします。仮想マシンが起動されると、ホスト名、IP アドレスなどを含む通知が Openstack によって生成されます。デーモンはこのメッセージを読み取り、何らかの情報をログに書き込む (または情報をサーバーに POST するか、ユーザーに通知する) 必要があります。 .簡単なもの)。
2) サブプロセスの出力を解析し、出力に基づいてコールバックを実行します。例: 30 秒ごとに、システム コマンド " qstat " が実行され、ジョブ リソース マネージャー (例: TORQUE) にクエリが実行されます。1) と同様のコールバック。
3) ユーザーからのリクエストを受け取り、処理します。これは WSGI HTTP 経由になると思います。例: ユーザーは、仮想マシン テンプレートを含む XML テンプレートを送信します。デーモンはいくつかの単純な XML 解析を行い、ジョブ リソース マネージャー用のジョブ スクリプトを書き込みます。ジョブはリソース マネージャーに送信され、デーモンは "qstat" を使用してジョブのステータスと AMQP からのメッセージを継続的にチェックします。「ライブ」フィードバックをユーザーに返し、ログに書き込む必要があります。