ツイストを使用して、終わりのないセンサー データのストリームを吐き出すための最小限のサーバーを作成しています。
センサー データ キャプチャ ライブラリは、gevent と内部 gevent.Queue を使用して、提供するデータを保存します。
何らかの理由で、データは非常に遅く、バッファリングされているように見える方法で送信されます。センサーからは一定のペースで高速にデータが生成されていることを確認したので問題ありません。ツイスト プロデューサーで実際のデータのデキューを置き換え、それを定数に設定するだけでも問題なく動作します。そのため、gevent とツイストの相互作用に関連する必要があります。
データ生成センサーをセットアップするコードは次のようになります (プロデューサー コンストラクター内)。
gevent.spawn(self._headset.setup)
gevent.sleep(1)
そして、ねじれた resumeProducing 関数は次のようになります。
def resumeProducing(self):
self._paused = False
while not self._paused:
packet = self._headset.dequeue()
sensors = packet.sensors
data_str = ",".join(str(sensors[x]['value']) for x in sensor_names)
self._proto.transport.write(data_str + '\n')