2014-11-05 89 views
1

所以我想实现一个简单的通信协议,其中读取&写是完全异步的。这意味着客户端发送一些数据,然后服务器可能会或可能不会回答一个答案。所以我不能只打电话reader.read(),因为那样至少会有东西被退回。在此期间,我可能还会发送更多内容。asyncio流检查读者是否有数据

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

回答

1

有没有办法要求读者拥有传入的数据与否。

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

我强烈建议不要直接使用协议 - 它们是对流量控制有用的低级抽象,但对于应用程序代码更适合使用高级别流。

+0

愚蠢的我。我忽略了'reader.read()'是一个协程。 – velis 2014-11-06 07:16:32