【发布时间】:2011-03-19 03:32:31
【问题描述】:
在 Twisted 有 1 天的经验,我尝试安排消息发送以回复 tcp 客户端:
import os, sys, time
from twisted.internet import protocol, reactor
self.scenario = [(1, "Message after 1 sec!"), (4, "This after 4 secs"), (2, "End final after 2 secs")]
for timeout, data in self.scenario:
reactor.callLater(timeout, self.sendata, data)
print "waited %d time, sent %s\n"%(timeout, data)
现在它发送消息,但我有 2 个问题:
1)“超时”是从“现在”开始的,我想在之前的每个任务完成后计算它(上一条消息已发送)
2) 发送完所有消息后,我不知道如何关闭连接。如果我在callLaters 之后放置self.transport.loseConnection(),它会立即关闭连接。
在之前的尝试中,我没有使用reactor.callLater,而在for 循环中只使用了self.transport.write() 和time.sleep(n)。在这种情况下,所有消息都在所有超时过后一起发送......这不是我想要的。
目的是等待客户端连接,等待timeout1并发送message1,等待timeout2并发送message2,...等最终消息后-关闭连接。
【问题讨论】:
标签: python networking twisted