asyncio流检查读者是否有数据

时间:2014-11-05 11:06:41

标签: python-3.x python-asyncio

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

那么有没有办法检查读者是否有东西要读? (请注意,我正在特别谈论流版本:我完全清楚协议版本具有单独的读写处理程序,并且不会受到此问题的影响)

1 个答案:

答案 0 :(得分:2)

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

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

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