サブクラスasyncio.Protocol
を使用して、一部のサーバーに接続するTCPクライアントを作成しました。 は、下位レベルのインターフェイスをアプリケーションから分離し、階層化されたアーキテクチャを作成したいと思いますが、どのように進めるかは分かりません。 asyncio.Protocolに基づいたクラスでインターフェイスメソッド(sendやrecvなど)を公開して使用する方法
loop = asyncio.get_event_loop()
coro = loop.create_connection(partial(MyClient, loop),
'127.0.0.1', 8888)
loop.run_until_complete(coro)
loop.run_forever()
loop.close()
しかし、 「N + 1」層:setDataReceivedCallback
は、コールバックを登録するために使用されるであろうしながらsend
方法は、サーバ(リクエスト)メッセージを送信するために、N + 1層で使用される
def setDataReceivedCallback(self, fun):
self.dataReceivedIndication = fun
def send(self, msg):
self.transport.write(msg)
012と呼ばれるが呼び出される(その結果、プロトコルは、データが到着したというN + 1層への指示を発行することができる)。
しかし、どのようにしてこれらのエントリポイントを取得できるかわかりません。
create_connection
は、プロトコルのインスタンスを返す呼び出し可能が必要です:より明確にする ので、私はその時にインスタンスのホールドを取得することができなくなりますがloop
ポイントコルーチンのいずれかが露出しないようですさらに、一度run_foreverを実行すると、ループ自体を保持する能力がなくなります
私はここで何が欠けていますか?