2010-08-18 7 views
5

Deferred s sind eine gute Möglichkeit, asynchrone Verarbeitung in Twisted durchzuführen. Sie sind jedoch, wie der Name sagt, für zurückgestellte Berechnungen, die nur einmal ausgeführt und beendet werden und die Rückrufe einmal auslösen. Was passiert, wenn ich eine wiederholte Berechnung habe, etwa wie ein Knopf geklickt wird? Gibt es ein Deferred -ähnliches Objekt, das wiederholt ausgelöst werden kann und alle Rückrufe aufruft, wenn es ausgelöst wird?Twisted: Deferred, die wiederholt ausgelöst wird?

+1

Es ist buchstäblich vier Jahre, aber jemand gab mir eine sehr zufriedenstellende [hier] (http://stackoverflow.com/a/27996359/2419669). – yangmillstheory

Antwort

3

Ich habe das für jetzt eingerichtet. Für meinen begrenzten Anwendungsfall macht es das, was ich will.

Jemand ließ mich wissen, wenn das schrecklich ist.

0

Nach was Sie suchen könnten, ist defer.inlineCallbacks, die es Ihnen ermöglicht, einen Generator zu verwenden, um eine sequenzielle Kette von Deferreds zu erstellen. Im Wesentlichen könnten Sie einfach einen Generator erstellen, der niemals endet (oder bedingt endet) und daraus weiterhin Deferred generiert.

Es gibt eine große Beschreibung auf inlineCallbacks bei krondo.com.

+0

heh tolle Funktion. erinnert mich an Monaden in Haskell, irgendwie. Ich denke nicht, dass es das ist, wonach ich suche. Ich werde darüber nachdenken, wenn es nicht so spät ist – Claudiu

Verwandte Themen