初始Tornado异步非阻塞

Posted 铠甲巨人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始Tornado异步非阻塞相关的知识,希望对你有一定的参考价值。

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异步非阻塞的主要内容,如果未能解决你的问题,请参考以下文章

Python web框架 Tornado异步非阻塞

python---tornado补充(异步非阻塞)

Tornado----自定义异步非阻塞Web框架:Snow

Tornado 异步非阻塞

利用tornado使请求实现异步非阻塞

Tornado异步非阻塞的使用以及原理