• 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()
  • 相关阅读:
    创建线程的三种方式
    SpringMVC:拦截器和POST中文乱码问题
    SpringMVC:静态资源访问
    SpringMVC :转发、重定向、RedirectAttributes
    SpringMVC:Controller的编写
    SpringMVC——DispatcherServlet
    SpringMVC的执行流程
    第一个SpringMVC程序(注解实现)
    第一个SpringMVC程序
    springsecurity学习
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10007118.html
Copyright © 2020-2023  润新知