使用Twisted同时记录和接收命令行输入

3 投票
1 回答
1112 浏览
提问于 2025-04-17 05:58

我正在用Twisted开发一个应用程序,这个应用里有一个服务器,里面有一些定时器。服务器每秒会多次把定时器的值通过UDP发送给客户端。客户端需要能够发送各种命令(比如“暂停定时器1”或者“重置定时器2”)给服务器,以便改变发送给客户端的定时器状态。现在我遇到的问题是,客户端一直在记录从服务器接收到的定时器值,所以我不太确定该怎么做才能不让程序卡住。我想要的是异步处理,不想用线程。Twisted提供了很多异步输入输出的选项,但我不太确定哪个最合适,因为有些选项(比如basic.LineReceiver协议)在等待用户输入时还是会阻塞。

谢谢大家,
Ben

附言:这是我第一次发帖,请告诉我有什么可以改进的地方。

1 个回答

1

你可以使用 twisted.internet.stdio 来实现非阻塞的标准输入输出。这种方式提供了一种替代的流式、按顺序的、面向连接的传输方式,可以和任何通常在这种传输上运行的协议一起使用(类似的传输方式还有TCP和SSL)。

你可以查看 stdin.pystdiodemo.py,它们的链接在 这里

另外,LineReceiver 并不是“在等待用户输入时会阻塞”。它只是一种协议,甚至不自己进行任何输入输出操作。

撰写回答