Python verdreht: wie planen?
Nach eintägiger Erfahrung in Twisted versuche ich, das Senden von Nachrichten als Antwort an den TCP-Client zu planen:
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)
Jetzt sendet es Nachrichten, aber ich habe 2 Probleme:
1) "timeout" geht von "now" aus und ich möchte es zählen, nachdem jede vorherige Aufgabe abgeschlossen wurde (vorherige Nachricht wurde gesendet)
2) Ich kann die Verbindung nicht schließen, nachdem alle Nachrichten gesendet wurden. Wenn ich @ platzieself.transport.loseConnection()
nachcallLater
s es schließt sofort die Verbindung.
Im vorigen Versuch habe ich @ nicht benutreactor.callLater
, aber nurself.transport.write()
undtime.sleep(n)
imfor
loop. In diesem Fall wurden alle Nachrichten zusammen gesendet, nachdem alle Zeitüberschreitungen verstrichen waren ... Ich wollte nichts.
Der Zweck ist es, auf Client-Verbindung zu warten, Timeout1 zu warten und Nachricht1 zu senden, Timeout2 zu warten und Nachricht2 zu senden, ... usw. Nach der letzten Nachricht - Verbindung schließen.