前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python twisted diferred使用

python twisted diferred使用

作者头像
用户5760343
发布2022-05-14 10:29:59
2080
发布2022-05-14 10:29:59
举报
文章被收录于专栏:sktj

Deferred 可以按照这种方式说明:可能你在饭店中遇到过这个问题,如果你在等待自己喜欢 的桌子时,在一旁哼哼小曲。带个寻呼机是个好主意,它可以让你在等待的时候不至于孤零 零的站在那里而感到无聊。你可以在这段时间出去走走,到隔壁买点东西。当桌子可用时, 寻呼机响了,这时你就可以回到饭店去你的位置了。 一个Deferred 类似于这个寻呼机。它提供了让程序查找非同步任务完成的一种方式,而在这 时还可以做其他事情。当函数返回一个Deferred 对象时,说明获得结果之前还需要一定时间。 为了在任务完成时获得结果,可以为Deferred 指定一个事件处理器。 1、Deferred.callback,,,,,,,Deferred.errorback 当调用一个可以返回Deferred 的函数时,使用Deferred.addCallback 方法指定返回结果时调 用的函数。使用Deferred.addErrback 方法指定执行发生异常时调用的函数。 2 from twisted.internet import reactor,defer,protocol

class CallbackAndDisconnectProtocol(protocol.Protocol): def connectionMade(self): self.factory.deferred.callback("Connected!") self.transport.lostConnection()

class ConnectionTestFactory(protocol.ClientFactory): protocol=CallbackAndDisconnectProtocol def init(self): self.deferred=defer.Deferred() def clientConnectionFailed(self,connector,reason): self.deferred.errback(reason)

def testConnect(host,port): testFactory=ConnectionTestFactory() reactor.connectTCP(host,port,testFactory) return testFactory.deferred def handleSuccess(result,port): print("Connect to port %i"%port) reactor.stop() def handleFailure(failure,port): print("Error connecting to port %i: %s"%(port,failure.getErrorMessage())) reactor.stop() if name=="main": import sys if not len(sys.argv)==3: print("Usage: connectiontest.py host port") sys.exit(1) host=sys.argv[1] port=int(sys.argv[2]) connecting=testConnect(host,port) connecting.addCallback(handleSuccess,port) connecting.addErrback(handleFailure,port) reactor.run()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档