为什么self.transport.write()写入同一行,即使我在每次调用后引入睡眠后调用它两次?

时间:2016-05-05 16:32:21

标签: twisted

我尝试使用Twisted协议以每1秒的间隔写入客户端,但是当我使用client.transport.write()两次时,它会在同一行上打印两个数据。我想要做的是将第一个数据发送到客户端然后在某个延迟后发送第二个数据。 方法如下:     client.transport.write(list_of_commands [0])     time.sleep(10)     client.transport.write(list_of_commands [1]) 我也尝试根据Twisted transport.write中的建议将client.transport.getHandle()。sendall()替换为client.transport.write(),但它给出了相同的结果。问题如何解决?

1 个答案:

答案 0 :(得分:0)

Twisted是由主反应堆循环运行的异步单线程,这意味着如果您在代码中进行睡眠,则反应器在睡眠一段时间后将无法完成其工作。 您可以使用reactor.callLater(interval, self.transport.write, data)