python – 从asyncio StreamReader读取

python – 从asyncio StreamReader读取,第1张

概述我正在尝试扩展使用流式读写器( code)的python asyncio HTTP服务器示例.如果我理解正确,示例处理程序从阅读器读取100个字节,并通过编写器将其回送给客户端.我试图读取超过100个字节…读取,直到没有什么比阅读更好了. 我试过让read()函数尽可能多地读取, data = yield from reader.read() 但这似乎永远阻止了.所以我试着读取块直到达到EOF, 我正在尝试扩展使用流式读写器( code)的python asyncio http服务器示例.如果我理解正确,示例处理程序从阅读器读取100个字节,并通过编写器将其回送给客户端.我试图读取超过100个字节…读取,直到没有什么比阅读更好了.

我试过让read()函数尽可能多地读取,

data = yIEld from reader.read()

但这似乎永远阻止了.所以我试着读取块直到达到EOF,

while not reader.at_eof():    data += yIEld from reader.read(100)

虽然这会检索更多的数据,但它似乎阻止了读取调用而不是退出while循环.

如何使用流阅读器从客户端获取整个消息?

解决方法 您应检查 StreamReader.read是否返回空字节对象以表示EOF:

data = bytearray()while True:    chunk = yIEld from reader.read(100)    if not chunk:        break    data += chunk

另外,如果您需要功能齐全的http客户端,请考虑使用aiohttp.

总结

以上是内存溢出为你收集整理的python – 从asyncio StreamReader读取全部内容,希望文章能够帮你解决python – 从asyncio StreamReader读取所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1197545.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存