gpt4 book ai didi

python - 我应该在 asyncio 中使用协议(protocol)还是流?

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:45 25 4
gpt4 key购买 nike

我是 asyncio 的新手,想知道在更好的实践、协议(protocol)或流方面,哪个 API 比另一个更好?

对我来说,protocol(callback based API) 似乎更容易使用,因为已经为您提供了 connection_madedata_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

最佳答案

stream objects更高级别并提供许多有用的方法:

与任何抽象一样,这是有代价的:协程的 react 性不如回调。例如 reader.read() 涉及至少两个事件循环回调:

  • 当接收到一些数据时,会触发回调并调用 reader.feed_data
  • 然后 feed_data 触发另一个恢复 reader.read() 执行的回调。

关于python - 我应该在 asyncio 中使用协议(protocol)还是流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38213409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com