2

ツイスト API を使用して tcp 経由でデータを取得するアプリケーションに取り組んでいます。私たちのプロセスは、イベントをリッスンし続け、次のことを行うリスナー アプリケーションです。

  1. イベント通知を処理し、辞書を作成してサードパーティ アプリケーションに送信します
  2. 辞書を完成させるために..ツイストAPIを使用してプロセスを呼び出し、追加のデータを取得して辞書を完成させます。

1回の実行後にメインスレッドでツイストAPI実行を実行できません..reactorが停止し、メインスレッドがそれ以上進行しません..

私が欲しいのは:

  1. イベント通知ごとに --- 新しいスレッドをスプールして、tcp を介してねじれた呼び出しを行い、データを取得します。
  2. mainThread と newThread を結合して、その完了を待ちます
  3. 結果を取得し、半分作成された辞書とマージして、サードパーティのアプリに送信します。

メインスレッドで eventObj1 をリッスンするとしましょう ---

処理には、step1---step2---step3---step4--パーティへの送信などの手順が含まれます。

ステップ 4 には tcp を介したデータのフェッチが含まれていると仮定します。辞書を完成させてサード パーティに送信する前に、結果が利用可能になるまで待機する必要があります。

そのため、eventObj1が来ると、tcpを介してフェッチするためにキューに入れます..そうしながらreactor.start() (メインスレッドでリアクターが開始されます)、しばらくしてデータを取得し、コールバックが呼び出された後、event1用にdictが構築され、サードパーティに送信されます。

しかし、データフェッチのためにこれ以上イベントをキューに入れることはできません..メインスレッドが呼び出されない限り、 reactor.stop()eventObj2reactor.stop()の処理に戻ることができないため..

だから、私が必要としているのは、別のスレッドでリアクターを開始することだと思います..メインプログラムが終了する前に、メインスレッド停止リアクターからイベントをキューに入れ続けます

4

1 に答える 1

1

スレッドは必要ありません。リアクターに複数のことをさせたいだけで、実際にはリアクターを持つことの要点です。説明については、この質問を参照してください: 1 つのプログラムで Twisted reactor が複数回起動しますか?

于 2012-09-12T23:19:32.307 に答える