2016-07-23 15 views
1

hereに示すように、私はcherrypy wsgiサーバによって提供されるPython Djangoアプリケーションを設定しました。このアプリは基本的に別のIRCクライアントです。ここでは契約があります:確立する必要のある新しいサーバー接続ごとにボットのインスタンスをいくつか作成しなければならない可能性が非常に高いです。私は各ボットと通信できる必要があります。 1つの答えはmultiprocessing.Queueを使用することでした。このオブジェクトは永続的なデータであり、私がボットと通信できるようにします。しかし、私はすべてのボットが同じ信号を同時に聞いて、例えば停止する必要があります。すべてのボットは、停止信号が彼のためかどうかを制御する必要があります。したがって、私は別のデーモンスレッドで動作する各ボットがシグナルの束を聞くことを可能にするオブジェクトまたは他の方法が必要です。 cherrypyがサーバワイドメッセージ用に使っているBusシステムは素晴らしいですが、ここでは過剰なもののように思えますし、実装する方法はわかりません。助言がありますか ?スレッド間の通信のためのPythonデータ永続オブジェクト

+1

ボットごとにキューを使用することを考えましたか? –

+0

どのようにデータをすべてのキューに入れるのですか?または1つの特定のキューに? – mrj

+1

すべてのキューのリストを持っているので、それぞれのキューに簡単に項目を追加できます。 –

答えて

0

私は変数とオブジェクトを混ぜ合わせただけです。変数をあるモジュールで定義して別のモジュールにインポートすることはできません(a = foo、次に別のモジュールからaを変更し、3番目のモジュールからaをインポートすることはできません)。これは、リストや辞書などで可能です。 解決方法:各ボットの起動時に(指定されたサーバーへの接続を試みると)、ニックネーム(これはIRC上で一意でなければならない)でキューが作成され、このサーバーに割り当てられます。各ボットにはデーモン・リスナーがあり、キューを読み取ります。他のモジュールはdictをインポートします。特定のキューは、リスナーによって使用されるシグナルをそこに置きます。 システムは完全に機能します。いいぞ。私は1つの面で問題があります:各ボットは複数のDCC接続を持つことができ、各接続にデータを割り当て、それらを混ぜ合わせるのは難しいです。

関連する問題