首页 > 其他 > 详细

初始Tornado异步非阻塞

时间:2017-12-15 22:22:32      阅读:253      评论:0      收藏:0      [点我收藏+]
Tornado  异步非阻塞
from tornado import gen
class MainHandler(tornado.web.RequestHandler):
    @gen.coroutine  #关键点
    def get(self):
    futrue =Future()#关键点
    #阻塞内容,必须写这个格式,time.sleep不好使
    #tornado.ioloop.IOLoop.current().add_timeout(time.time()+10,self.doing) #关键点 self.doing 回调函数
    http = httpclient.AsyncHTTPClient()
    #yield futrue#关键点
    yield http.fetch("http://www.google.com",self.doing)
    def doing(self,*args,**kwargs):#关键点
        self.write(‘返回内容‘
        self.finish())
回调函数执行时间:
超时时间之后执行
http请求消息返回之后执行。
如果future没有做事的时候,这个回调函数永远不执行
因为做事之后会默认执行future.set_result()方法,这个方法执行回调函数
本质上就看这个set_result什么时候执行。
tornado会将这个io操作放到tornado内部的io多路复用中。
检测是否执行完毕,没有则一直执行,框架去执行其他请求。
如果执行完就执行set_result
如果用tronado的异步非阻塞,必须是io请求,不然没有意义。
 
 
 

初始Tornado异步非阻塞

原文:http://www.cnblogs.com/ArmoredTitan/p/8044954.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!