Python скрутил: как запланировать?

При наличии 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) Я не знаю, как закрыть соединение после того, как все сообщения были отправлены. Если я помещаю self.transport.loseConnection() после callLaters это сразу закрывает соединение.

В предыдущей попытке я не использовал reactor.callLater, но только self.transport.write() и time.sleep(n) в for цикл. В этом случае все сообщения были отправлены вместе после того, как все тайм-ауты передали... Не что-то я хотел.
Цель состоит в том, чтобы ожидать соединения клиента, ожидать timeout1 и отправить message1, ожидать timeout2 и отправить message2... и т.д. После заключительного сообщения - закрывают соединение.

6
задан DominiCane 21 July 2010 в 17:45
поделиться