码迷,mamicode.com
首页 > 其他好文 > 详细

初始Tornado异步非阻塞

时间:2017-12-15 22:39:57      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:请求   handler   coroutine   post   result   request   ini   必须   http   

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异步非阻塞

标签:请求   handler   coroutine   post   result   request   ini   必须   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!