具有扭曲的爲期1天的經驗,我嘗試安排消息回覆發送到TCP客戶端:Python扭曲:如何安排?
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)我不知道如何在所有消息發送後關閉連接。如果我在callLater
之後放置self.transport.loseConnection()
,它立即關閉連接。
在之前的嘗試中,我沒有使用reactor.callLater
,但只有self.transport.write()
和time.sleep(n)
在for
循環中。在這種情況下,所有消息在所有超時過後都會一起發送......不是我想要的。
目的是等待客戶端連接,等待timeout1併發送message1,等待timeout2併發送message2,等等。最後的消息 - 關閉連接之後。
謝謝,現在我明白了爲什麼「睡大覺」,沒有工作。你能舉一個例子,在前面reactor.callLater()的末尾安排reactor.callLater()嗎? – DominiCane 2010-07-22 05:12:40
只需定義一個調用'self.sendata(data)'的函數,然後爲下一個回調調用'reactor.callLater()',並將該函數傳遞給第一個'reactor.callLater()'而不是'self.sendata ' – 2010-07-22 18:26:53