zoukankan      html  css  js  c++  java
  • tornado的异步效果

    第一种方式:
    
    import tornado.ioloop
    import tornado.web
    from tornado import gen
    from tornado.concurrent import Future
    import time
    
     
    
    #########异步效果1,iploop
    class 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 future
    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),
    ])
    
     
    
     
    
     
    第二种方式:
    
    import tornado.ioloop
    import tornado.web
    from tornado import gen
    from tornado.concurrent import Future
    import time
    
     
    
    ######异步效果2,AsyncHTTPClient
    class MainHandler(tornado.web.RequestHandler):
    @gen.coroutine##加一个装饰器
    def get(self):
    import time
    from tornado import httpclient
    http=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.ioloop
    import tornado.web
    from tornado import gen
    from tornado.concurrent import Future
    import time
    
    
    #异步效果3,future
    future=None
    class MainHandler(tornado.web.RequestHandler):
    @gen.coroutine##加一个装饰器
    def get(self):
    import time
    global future
    future=Future()
    future.add_done_callback(self.doing)#####在这里设置返回值,future,当future里面的result值发生改变的时候就会触发这个的执行
    yield future
    
    def doing(self,*args,**kwargs):
    self.write('yibu ')
    self.finish()
    
    
    class IndexHandler(tornado.web.RequestHandler):
    def get(self):
    global future
    future.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()
  • 相关阅读:
    169. Majority Element求众数
    567. Permutation in String字符串的排列(效率待提高)
    51. N-Queens N皇后
    52. N-Queens II N皇后II
    layui的form.val无法动态渲染赋值表单问题解决方法
    layui 父页面获取弹窗传递的值 和 父页面传值给子弹窗的方法
    layui搜索框,监听为空,表格重新加载
    layui form表单 input输入框获取焦点后 阻止Enter回车自动提交
    5月17日 日期格式遇到一些问题
    Layui关闭弹出层并刷新父窗口
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10007118.html
Copyright © 2011-2022 走看看