[英]Twisted: deferred that fires repeatedly?
Deferred
s是在Twisted中進行異步處理的好方法。 但是,顧名思義,它們用於延遲計算,它只運行和終止一次,觸發一次回調。 如果我有一個重復的計算,如點擊一個按鈕怎么辦? 是否有任何Deferred
的對象可以重復觸發,在觸發時調用附加到它的所有回調?
我現在已經設置好了。 對於我有限的用例,它可以滿足我的需求。
class RepeatedDeferred:
def __init__(self):
self.callbacks = []
self.df = defer.Deferred()
def addCallback(self, callback):
self.callbacks.append(callback)
self.df.addCallback(callback)
def callback(self, res):
self.df.callback(res)
self.df = defer.Deferred()
for c in self.callbacks:
self.df.addCallback(c)
有人告訴我這是不是很糟糕。
您可能正在尋找的是defer.inlineCallbacks
,它允許您使用生成器來創建順序的Deferred鏈。 基本上你可以創建一個永遠不會結束(或有條件地結束)並繼續從中生成Deferred的生成器。
在krondo.com上使用inlineCallbacks
有一個很好的寫法 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.