sahip 1 günlük deneyim ben tcp müşteriye cevapta gönderme mesajı ayarlamaya çalışın:Python twisted: nasıl planlanır? Twisted içinde
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)
Şimdi mesajları gönderir, ama 2 sorunları var:
1) "zaman aşımı" "den gidiyor şimdi "ve önceki her görev tamamlandıktan sonra onu saymak istiyorum (önceki mesaj gönderildi)
2) Tüm mesajlar gönderildikten sonra bağlantıyı nasıl kapatacağımı bilmiyorum. callLater
s sonra self.transport.loseConnection()
yerleştirirseniz hemen bağlantıyı kapatır.
Bir önceki denemede reactor.callLater
, ancak self.transport.write()
ve time.sleep(n)
for
döngüsünde kullanmadım. Bu durumda tüm mesajlar tüm zaman aşımları geçtikten sonra birlikte gönderildi ... İstediğim bir şey değil.
İstemci bağlantısı için beklemek, zaman aşımı1 beklemek ve ileti1, bekle zaman aşımı2 ve ileti2, ... göndermek vb. Son mesajdan sonra - bağlantıyı kapatın.
sayesinde, şimdi anladım. Önceki reactor.callLater() 'ın sonunda reactor.callLater() zamanlama ile bir örnek verebilir misiniz? – DominiCane
Sadece 'self.sendata (data)' olarak adlandırılan bir işlevi tanımlayın ve sonra bir sonraki geri arama için 'reactor.callLater()' işlevini çağırın ve bu işlevi 'self.sendata yerine ilk' reakctor.callLater() 'öğesine iletin. –