ツイスト API を使用して tcp 経由でデータを取得するアプリケーションに取り組んでいます。私たちのプロセスは、イベントをリッスンし続け、次のことを行うリスナー アプリケーションです。
- イベント通知を処理し、辞書を作成してサードパーティ アプリケーションに送信します
- 辞書を完成させるために..ツイストAPIを使用してプロセスを呼び出し、追加のデータを取得して辞書を完成させます。
1回の実行後にメインスレッドでツイストAPI実行を実行できません..reactorが停止し、メインスレッドがそれ以上進行しません..
私が欲しいのは:
- イベント通知ごとに --- 新しいスレッドをスプールして、tcp を介してねじれた呼び出しを行い、データを取得します。
- mainThread と newThread を結合して、その完了を待ちます
- 結果を取得し、半分作成された辞書とマージして、サードパーティのアプリに送信します。
メインスレッドで eventObj1 をリッスンするとしましょう ---
処理には、step1---step2---step3---step4--パーティへの送信などの手順が含まれます。
ステップ 4 には tcp を介したデータのフェッチが含まれていると仮定します。辞書を完成させてサード パーティに送信する前に、結果が利用可能になるまで待機する必要があります。
そのため、eventObj1が来ると、tcpを介してフェッチするためにキューに入れます..そうしながらreactor.start()
(メインスレッドでリアクターが開始されます)、しばらくしてデータを取得し、コールバックが呼び出された後、event1用にdictが構築され、サードパーティに送信されます。
しかし、データフェッチのためにこれ以上イベントをキューに入れることはできません..メインスレッドが呼び出されない限り、 reactor.stop()
eventObj2reactor.stop()
の処理に戻ることができないため..
だから、私が必要としているのは、別のスレッドでリアクターを開始することだと思います..メインプログラムが終了する前に、メインスレッド停止リアクターからイベントをキューに入れ続けます