3
我對asyncio
非常陌生,想知道哪種API比其他API在更好的實踐,協議或流方面更好?我應該在asyncio中使用協議還是流?
對我來說,protocol(callback based API)
似乎更容易合作,因爲已經有connection_made
和data_received
方法提供給您。與streams(coroutine based API)
你必須自己管理連接和讀取數據,但我覺得它更多地利用了coroutine
的概念,這對我來說似乎是件好事。
這就是我如何聽取傳入的數據,對我感到尷尬。我也可以使用readeexactly
,但有時會增加IncompleteReadError
。
message_body = b''
message_length = SOME_NUMBER
while True:
while len(message_body) < message_length:
try:
message_body_chunk = await reader.read(message_length - len(message_body))
except Exception as e:
self.logger.error(e)
return
if not message_body_chunk:
return
message_body += message_body_chunk