#coding=utf8
from twisted.internet import reactor
from twisted.internet.task import deferLater
from twisted.web.server import Site, NOT_DONE_YET
from twisted.web.resource import Resource
import time,sys
DELAY = 10
#同步执行
class WebRootResource(Resource):
isLeaf = True
def render_GET(self, request):
time.sleep(DELAY)
return '<html>Current Time:%s</html>' % time.asctime()
#异步执行
class AsyWebRootResource(Resource):
isLeaf = True
def 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_YET
if __name__ == '__main__':
reload(sys)
sys.setdefaultencoding('utf8')
reactor.listenTCP(8000, Site(WebRootResource()))
#reactor.listenTCP(8000, Site(AsyWebRootResource()))
reactor.run()
twisted.http 异步访问站点
最新推荐文章于 2024-05-10 09:42:08 发布