zoukankan      html  css  js  c++  java
  • 初始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请求,不然没有意义。
     
     
     
  • 相关阅读:
    格式化输出数字
    传教士经验
    集合
    替换
    连接
    填充
    取值
    分割
    创建日历和日期列表
    常用日期格式
  • 原文地址:https://www.cnblogs.com/ArmoredTitan/p/8044954.html
Copyright © 2011-2022 走看看