python-3.x - 异步流检查读取器是否有数据

标签 python-3.x python-asyncio

所以我想实现一个简单的通信协议(protocol),其中读取和写入完全异步。这意味着客户端发送一些数据,然后服务器可能会也可能不会响应答案。所以我不能只调用 reader.read() 因为它会阻塞,直到至少返回一些东西。同时我可能还有更多东西要发送。

那么有没有办法检查读者是否有东西要读? (请注意,我专门谈论流版本:我完全知道协议(protocol)版本具有单独的读取和写入处理程序,并且不会遇到此问题)

最佳答案

无法询问阅读器是否有传入数据。

我想创建asyncio.Task来循环中从asyncio流读取器读取数据。 如果您需要异步写入数据,请随时从任何具有一些传出数据的任务中调用 StreamWriter.write()

我强烈不建议直接使用协议(protocol)——它们是对流控制有用的低级抽象,但对于应用程序代码来说,最好使用高级流。

关于python-3.x - 异步流检查读取器是否有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755660/

相关文章:

python-3.x - 将方法移动到另一个 Python 文件

python - 在 for 循环期间字典调用变量

python - 如何浅复制列表的一部分?

python - 使用正则表达式Python根据模式提取部分字符串

python - 有什么方法可以让 Phusion Passenger 在 Python 3.x 中运行?

python-asyncio - 使用aiogram创建后台进程

sqlalchemy - 使用 python-asyncio 数据库时如何获取最后插入 ID

python - 如何在 Python 中更改按钮大小?

python - 为什么 asyncio 使用 aiohttp 发出请求仍然使用线程

python-3.5 - 一次处理 N 个作业的 Asyncio Worker?