同じマシン上の 2 つのアプリケーション間でいくつかのキューを共有する必要があります。1 つはトルネードで、そのキューに時折メッセージを追加します。もう 1 つは、すべての反復で新しいメッセージを追加する cron から実行される Python スクリプトです。誰かが私にこのモジュールを提案できますか? (これはredisの使用で解決できますか?この目的でmysqlを使用することは避けます)
3 に答える
アプリケーションから独立してキューをホストするためにRabbitMQを試してから、Tornado アダプターも付属するPikaを使用してアクセスします。適切なモデルを選択するだけです: queue/exchange/topic と必要なメッセージのプロトコル (文字列、json、xml、yaml) で設定は完了です。
リストでredisを使用します。要素を上にプッシュし、rpop をテールから削除できます。
redis rpop とredis lpushxを参照してください
これを行うために私が考えることができる最も純粋な方法は、IPC を使用することです。Python は、あるプロセスが別のプロセスを生成するときの 2 つのプロセス間の IPC を非常に適切にサポートしていますが、シナリオではそうではありません。sysv_ipc
やなどの ipc 用の python モジュールがありますposix_ipc
。zeromq
しかし、トルネードでメイン アプリケーションを構築する場合は、発行されたメッセージをソケットでリッスンするだけではどうですか。
ここに詳細情報へのリンクがあります。Publisher-Subscriber モデルが必要です。
http://zeromq.github.io/pyzmq/eventloop.html#tornado-ioloop
cron ジョブが開始され、メッセージがzeromq
ソケットに発行されます。すでに実行中のアプリケーションは、それらをサブスクライバーとして受け取ります。