码迷,mamicode.com
首页 > 其他好文 > 详细

twisted中defer的关键用法

时间:2015-08-06 09:31:33      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:twisted   deferred   

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的关键用法

标签:twisted   deferred   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!