首页 > 其他 > 详细

twisted中defer的关键用法

时间:2015-08-06 09:29:46      阅读:571      评论:0      收藏:0      [点我收藏+]

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(),同时增加相同的错误回调和正确回调。

 

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

twisted中defer的关键用法

原文:http://blog.csdn.net/davidsu33/article/details/47310839

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!