第一种方式:

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. JS 样式字符串 转 JSON对象

    项目中需要把div 上的样式值转成数据展示 形如: padding: 7px 2px 1px 3px; color: rgb(238, 65, 65); background-color: rgb(2 ...

  2. nginx接入let's encrypt

    按以下步骤: 一.放开443端口 我的是云服务器,默认没开放443端口,需要先在控制台放开 二.使用let’s encrypt 生成证书 执行以下命令: git clone https://githu ...

  3. Rootkit介绍

    Rootkit 是一种特殊类型的 malware(恶意软件). Rootkit 之所以特殊是因为您不知道它们在做什么事情.Rootkit 基本上是无法检测到的,而且几乎不能删除它们. 虽然检测工具在不 ...

  4. remove() 方法

    jQuery的 remove() 方法,去掉选中元素. 例如: $("button").click(function(){ $("p").remove(); } ...

  5. linux下mysql 配置

    su root 加环境变量 在文件末尾加上如下两行代码 PATH=/usr/local/webserver/php/bin:$PATHexport PATH # /etc/profile 保存,重启 ...

  6. 【译】第九篇 SQL Server安全透明数据加密

    本篇文章是SQL Server安全系列的第九篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  7. 【tmos】SpringBoot项目IDEA不识别依赖,但是能够运行时什么鬼?

    如下图,但是项目却能够正常运行 解决方法 方法1 方法2 方法3 删除项目的.idea文件,然后重新打开IDEA 方法4 删除项目的iml文件,然后reimport项目的pom.xml 文件,错误提示 ...

  8. 【jquery隐藏、显示事件and提示callback】【淡入淡出fadeToggle】【滑入滑出slideToggle】【动画animate】【停止动画stop】

    1.jquery隐藏and显示事件 $("p").hide();      //隐藏事件$("p").hide(1000);  //1秒内缓慢隐藏$(" ...

  9. 2017-2018-2 20165234 实验二 《Java面向对象程序设计》实验报告

    一.实验报告封面 课程:Java程序设计  班级:1652班  姓名:刘津甫  学号:20165234 指导教师:娄嘉鹏  实验日期:2018年4月13日 实验时间:15:35 - 17:15  实验 ...

  10. ListBox滚动条 刷新列表之后 指定位置(置顶或滚动到最后)

    参数ObservableCollection<T>类型 滚动条在最上 ListBox.ScrollIntoView(ListBoxOC[0]);滚动条在最下 ListBox.ScrollI ...