2

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

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

4

1 回答 1

2

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

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

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

于 2014-11-05T17:19:25.837 回答