的类中公开和使用接口方法(例如send和recv)我已经将子类型asyncio.Protocol
创建为连接到某个服务器的TCP客户端。 我想从应用程序分开较低级别的接口,并创建一个分层体系结构,但我不确定如何继续。如何在基于asyncio.Protocol
我跟着TCP Echo Client present on the official documentation的例子,我开始在客户端的方式也很相似:
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”层:
def setDataReceivedCallback(self, fun):
self.dataReceivedIndication = fun
def send(self, msg):
self.transport.write(msg)
的send
方法将由N + 1层中使用,以将消息发送到所述服务器(请求),而setDataReceivedCallback
将用于注册回调即所谓012时调用(以便协议可以向N + 1层发出某些数据已到达的指示)。
但是,我不确定如何获得这些入口点。 更清楚:
create_connection
需要返回一个协议实例可以调用的:所以我将无法得到该实例的保持在该点loop
似乎没有公开任何协同程序它运行 - 此外,一旦我执行run_forever我失去了获得循环本身的能力
我在这里失踪了什么?