第一种方式:

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()+,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()
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()
tornado.ioloop.IOLoop.instance().start()

tornado的异步效果的更多相关文章

  1. 深入理解Tornado——一个异步web服务器

    本人的第一次翻译,转载请注明出处:http://www.cnblogs.com/yiwenshengmei/archive/2011/06/08/understanding_tornado.html原 ...

  2. 在 tornado 中异步无阻塞的执行耗时任务

    在 tornado 中异步无阻塞的执行耗时任务 在 linux 上 tornado 是基于 epoll 的事件驱动框架,在网络事件上是无阻塞的.但是因为 tornado 自身是单线程的,所以如果我们在 ...

  3. Tornado的异步非阻塞

    阻塞和非阻塞Web框架 只有Tornado和Node.js是异步非阻塞的,其他所有的web框架都是阻塞式的. Tornado阻塞和非阻塞两种模式都支持. 阻塞式: 代表:Django.Flask.To ...

  4. 深入理解yield(三):yield与基于Tornado的异步回调

    转自:http://beginman.cn/python/2015/04/06/yield-via-Tornado/ 作者:BeginMan 版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须 ...

  5. tornado 之 异步非阻塞

    异步非阻塞 1.基本使用 装饰器 + Future 从而实现Tornado的异步非阻塞 import tornado.web import tornado.ioloop from tornado im ...

  6. tornado 11 异步编程

    tornado 11 异步编程 一.同步与异步 同步 #含义:指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系 #现象:有一个共同的时钟,按来的顺序一个一个处理 #直观感受:需要等待,效率 ...

  7. Python核心框架tornado的异步协程的2种方式

    什么是异步? 含义 :双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位 现象:没有共同的时钟,不考虑顺序来了 ...

  8. Tornado中异步框架的使用

    tornado的同步框架与其他web框架相同都是处理先来的请求,如果先来的请求阻塞,那么后面的请求也会处理不了.一直处于等待过程中.但是请求一旦得到响应,那么: 请求发送过来后,将需要的本站资源直接返 ...

  9. Tornado之异步非阻塞

    同步模式:同步模式下,只有处理完前一个任务下一个才会执行 class MainHandler(tornado.web.RequestHandler): def get(self): time.slee ...

随机推荐

  1. 二叉树的python可视化和常用操作代码

    二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...

  2. Ubuntu Server Download

    点击查看所有版本(中国站点) http://mirror.lzu.edu.cn/ubuntu-releases/

  3. Chimee - 简单易用的H5视频播放器解决方案

    Chimee是由奇舞团开源的一套H5视频播放器解决方案,由奇舞团视频云前端团队结合在业务和视频编解码方向的沉淀积累倾心打造.Chimee支持MP4.M3U8.FLV等多种媒体格式,同时它也帮我们解决了 ...

  4. PMD -- An extensible cross-language static code analyzer.

    PMD An extensible cross-language static code analyzer. https://github.com/pmd/pmd 跨语言静态代码分析工具.可以查找通用 ...

  5. git 完全讲解 无废话,包含在myeclipse中使用,包括解决冲突

    Git 1. Git简介 1.1 git是什么 1.1.1概念 Git:git是一款开源的分布式的版本控制软件 Github:是一个基于git的面向开源及私有软件项目的托管平台 因仅支持git 作为唯 ...

  6. UE4 二维相关

    SceneCapture2D  (类似相机组件)可将视口内的图像转化为平面二维纹理资源渲染到 RenderTargetRenderTarget 可以被 Material直接使用例:做小地图SceneC ...

  7. 第26月第29天 ffmpeg yasm

    1. brew install automake fdk-aac git lame libass libtool libvorbis libvpx \ opus sdl shtool texi2htm ...

  8. Javascript入门(三)函数

    Javascript函数 一.函数定义与执行 <script type="text/javascript"> //define function fun1(){ ale ...

  9. linux 文件处理命令

  10. Callable的用法示例

    //Runnable是执行工作的独立任务,但是它不返回任何值.在JavaSE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表的是从方法call()中返回的值,并且必须使用Execut ...