現在、ストリーミング サーバーからデータを受信するために作成した tcp/ip クライアント モジュールを使用する python プログラムがあります。サーバーはデータ行を出力します。
私の TCP クライアント クラスはかなり原始的であり、ねじれた ReconnectingClientFactory を使用するようにリファクタリングしたいと考えています。
メイン プログラムは現在、TCP クライアントの readLines 関数からデータを取得しており、受信した行を「生成」します。
TCP クライアント メソッドには、次の方法でアクセスします。
for msg_buffer in self.myTcpClient.readLines():
do some stuff with the data in msg_buffer
私の TCP クライアントでは、本質的に readLines メソッドは次のようになります。
while True:
newLine = self.sock.recv(self.buffer_size)
yield newLine
ツイスト クライアントを実装するとき、イテレータとして動作し、データを生成する何らかの方法が必要です。プロトコルの dataReceived メソッドで何かを行うと思います。
これがどのように機能するかを理解しようとして迷っています。ツイストされた deferred はこの種の使用を意図しているように見えますが、目的のために deferred を使用する方法がわかりません (deferred に関する私の仮定が正しい場合)。
完璧な世界では、ねじれたクライアントは受信したとおりに回線を生成するため、現在のメソッドと同様の呼び出しが機能します。すなわち
class GetData(protocol):
def dataReceived(self, data):
yield data
しかし、それは単純化しすぎだと思います。
要約すると、私がやろうとしているのは、私の readLines メソッドのように動作し、多かれ少なかれ次のようにアクセスできるねじれた再接続 TCP クライアントを実装することです。
for msg_buffer in self.twistedTcpClient.readLines():
どんなポインタでも大歓迎です
更新:ツイストの「かぎ針編み」を偶然見つけました。一見したところ、Crochet はまさに私が必要としている種類のモデル用に設計されているように見えます... いくつかのテストの後、報告します