的類中公開和使用接口方法(例如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我失去了獲得循環本身的能力
我在這裏失蹤了什麼?