カテゴリー
Uncategorized

twisted.internet.defer.Deferred を止める

登録された遅延ルーチンが廃棄される defer クラスを作る。

from twisted.internet.defer import Deferred
class StopDeferred(Deferred):
def addCallbacks(self, callback, errback=None,
callbackArgs=None, callbackKeywords=None,
errbackArgs=None, errbackKeywords=None):
pass

callback または errback の返り値として StopDeferred のインスタンスを返す。

def cb(ob):
return StopDeferred()

呼び出し元のフレームを取得して twisted.internet.defer.Deferred._runCallbacks の cb を空にしても良いんですけどね。

StopIteration 風に raise StopDeferred ってできればいいのに。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です