twisted中defer的要害用法

twisted中defer的关键用法

1.deferred是通过调用callback或则errback来启动(需要传入参数),如果errback传入的是字符串,则默认转换为twisted.python.failure.DefaultException。

2.defered仅仅只能调用一次,多次调用会触发AlreadyCalledError的异常,这帮助阻止了一个事件被多次处理的情况。

3.在第N层的callback和errback由第N+1层的errback和errback链处理,如果第N层抛出异常(raise Exception)或则返回一个Failure,则由第N+1的errback处理,如果N+1已经终止,则程序会停止执行,会抛出一个Unhandled Error异常。如果没有Failure返回或则没有抛出异常,则继续由N+1的callback进行处理。依赖于回调的返回结果,执行流程将会在errback和callback之间来回交叉执行。

4.通过deferred回调链返回的结果会作为参数传递给下一个回调层。

5.每次增加一个回调,都会增加一个回调层。例如

  addCallback(),增加一个正确回调,和一个默认的失败回调

  addErrback(),增加一个错误回调,和一个默认的成功回调

  addBoth(),同时增加相同的错误回调和正确回调。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。