第一种方式:import tornado.ioloopimport tornado.webfrom tornado import genfrom tornado.concurrent import Futureimport time #########异步效果1,iploopclass MainHandler(tornado.web.RequestHandler):@gen.coroutine##加一个装饰器def get(self):import time###等待五秒种future=Future()self.write('hello,world ')##五秒钟的超时时间,tornado.ioloop.IOLoop.current().add_timeout(time.time()+5,self.doing)##等待五秒的时间yield futuredef doing(self,*args,**kwargs):self.write('yibu ')self.finish()class IndexHandler(tornado.web.RequestHandler):def get(self):self.write('index') ##下面是路由映射appliaction=tornado.web.Application([(r'/main',MainHandler),(r'/index', IndexHandler),])
第二种方式:import tornado.ioloopimport tornado.webfrom tornado import genfrom tornado.concurrent import Futureimport time ######异步效果2,AsyncHTTPClientclass MainHandler(tornado.web.RequestHandler):@gen.coroutine##加一个装饰器def get(self):import timefrom tornado import httpclienthttp=httpclient.AsyncHTTPClient()yield http.fetch('http://www.geogle.com',self.doing )def doing(self,*args,**kwargs):self.write('yibu ')self.finish()class IndexHandler(tornado.web.RequestHandler):def get(self):self.write('index') ##下面是路由映射appliaction=tornado.web.Application([(r'/main',MainHandler),(r'/index', IndexHandler),]) ##settings配置if __name__ == '__main__':appliaction.listen(8000)tornado.ioloop.IOLoop.instance().start()
第三种方式:import tornado.ioloopimport tornado.webfrom tornado import genfrom tornado.concurrent import Futureimport time#异步效果3,futurefuture=Noneclass MainHandler(tornado.web.RequestHandler):@gen.coroutine##加一个装饰器def get(self):import timeglobal futurefuture=Future()future.add_done_callback(self.doing)#####在这里设置返回值,future,当future里面的result值发生改变的时候就会触发这个的执行yield futuredef doing(self,*args,**kwargs):self.write('yibu ')self.finish()class IndexHandler(tornado.web.RequestHandler):def get(self):global futurefuture.set_result(None)##设置返回值self.write('index') ##下面是路由映射appliaction=tornado.web.Application([(r'/main',MainHandler),(r'/index', IndexHandler),])##settings配置if __name__ == '__main__':appliaction.listen(8000)tornado.ioloop.IOLoop.instance().start()