我很asyncio陌生,想知道哪个 API 在更好的实践、协议或流方面比另一个更好?
对我来说,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
Run Code Online (Sandbox Code Playgroud) 我正在使用UDP套接字实现一个简单的网络堆栈,我希望从客户端向服务器发送大约1 MB的字符串数据.但是,我不知道sendto()C 中的UDP API中的长度是否有限制.如果存在限制并且sendto()不会处理超出限制的打包,那么我将不得不手动将字符串拆分为更小的块然后发送它们.
缓冲区的长度是否有限制?或者sendto()API是否自己处理打包.
任何见解都表示赞赏.