twisted.http 异步访问站点

来源:互联网 发布:工业网络交换机 编辑:程序博客网 时间:2024/05/20 13:36
#coding=utf8from twisted.internet import reactorfrom twisted.internet.task import deferLaterfrom twisted.web.server import Site, NOT_DONE_YETfrom twisted.web.resource import Resourceimport time,sysDELAY = 10#同步执行class WebRootResource(Resource):isLeaf = Truedef render_GET(self, request):time.sleep(DELAY)return '<html>Current Time:%s</html>' % time.asctime()#异步执行class AsyWebRootResource(Resource):isLeaf = Truedef render_laterCall(self, request):#要特别注意异步的时候,不能再return '<html>....'#只能通过request.write() request.finish()来完成异步执行操作。#return '<html>Current Time:%s</html>' % time.asctime()request.write('Finally done Time:%s' % time.asctime())request.finish()def render_GET(self, request):#首先调用lambda:request,返回request作为下次调用参数#去延迟调用render_latercall,将request作为参数d = deferLater(reactor, DELAY, lambda: request)d.addCallback(self.render_laterCall)return NOT_DONE_YETif __name__ == '__main__':reload(sys)sys.setdefaultencoding('utf8')reactor.listenTCP(8000, Site(WebRootResource()))#reactor.listenTCP(8000, Site(AsyWebRootResource()))reactor.run()

0 0