我正在使用Twisted构建一个应用程序,其中服务器包含一些计时器,并且每秒几次通过UDP将计时器值写入客户端。客户端需要能够向服务器发送各种命令(例如“暂停计时器1”或“重置计时器2”)以更改发送到客户端的计时器。我看到的问题是客户端不断记录从服务器收到的计时器值,因此我不确定如何在不阻塞的情况下执行此操作。我希望异步执行此操作,无需任何线程。 Twisted提供了许多异步IO选项,但我真的不确定哪个是最合适的,因为其中一些(例如basic.LineReceiver协议)在等待用户输入时仍然阻塞。
提前致谢, 本
P.S。这是我的第一篇文章,所以请让我知道我可以做的任何改进。
答案 0 :(得分:1)
您可以将twisted.internet.stdio
用于非阻塞标准I / O.这提供了一种备用的流式,有序,面向连接的传输,可以与通常在这种传输上运行的任何协议一起使用(其他类似的传输包括TCP和SSL)。
请参阅从http://twistedmatrix.com/documents/current/core/examples/
链接的stdin.py和stdiodemo.py此外,LineReceiver
并非“在等待用户输入时阻塞”。它只是一个协议,它甚至不会执行任何I / O.