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 ってできればいいのに。