所以我想实现一个简单的通信协议(protocol),其中读取和写入完全异步。这意味着客户端发送一些数据,然后服务器可能会也可能不会响应答案。所以我不能只调用 reader.read()
因为它会阻塞,直到至少返回一些东西。同时我可能还有更多东西要发送。
那么有没有办法检查读者是否有东西要读? (请注意,我专门谈论流版本:我完全知道协议(protocol)版本具有单独的读取和写入处理程序,并且不会遇到此问题)
最佳答案
无法询问阅读器是否有传入数据。
我想创建asyncio.Task
来循环中从asyncio流读取器读取数据。
如果您需要异步写入数据,请随时从任何具有一些传出数据的任务中调用 StreamWriter.write()
。
我强烈不建议直接使用协议(protocol)——它们是对流控制有用的低级抽象,但对于应用程序代码来说,最好使用高级流。
关于python-3.x - 异步流检查读取器是否有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755660/