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()+,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的异步效果的更多相关文章
- 深入理解Tornado——一个异步web服务器
本人的第一次翻译,转载请注明出处:http://www.cnblogs.com/yiwenshengmei/archive/2011/06/08/understanding_tornado.html原 ...
- 在 tornado 中异步无阻塞的执行耗时任务
在 tornado 中异步无阻塞的执行耗时任务 在 linux 上 tornado 是基于 epoll 的事件驱动框架,在网络事件上是无阻塞的.但是因为 tornado 自身是单线程的,所以如果我们在 ...
- Tornado的异步非阻塞
阻塞和非阻塞Web框架 只有Tornado和Node.js是异步非阻塞的,其他所有的web框架都是阻塞式的. Tornado阻塞和非阻塞两种模式都支持. 阻塞式: 代表:Django.Flask.To ...
- 深入理解yield(三):yield与基于Tornado的异步回调
转自:http://beginman.cn/python/2015/04/06/yield-via-Tornado/ 作者:BeginMan 版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须 ...
- tornado 之 异步非阻塞
异步非阻塞 1.基本使用 装饰器 + Future 从而实现Tornado的异步非阻塞 import tornado.web import tornado.ioloop from tornado im ...
- tornado 11 异步编程
tornado 11 异步编程 一.同步与异步 同步 #含义:指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系 #现象:有一个共同的时钟,按来的顺序一个一个处理 #直观感受:需要等待,效率 ...
- Python核心框架tornado的异步协程的2种方式
什么是异步? 含义 :双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位 现象:没有共同的时钟,不考虑顺序来了 ...
- Tornado中异步框架的使用
tornado的同步框架与其他web框架相同都是处理先来的请求,如果先来的请求阻塞,那么后面的请求也会处理不了.一直处于等待过程中.但是请求一旦得到响应,那么: 请求发送过来后,将需要的本站资源直接返 ...
- Tornado之异步非阻塞
同步模式:同步模式下,只有处理完前一个任务下一个才会执行 class MainHandler(tornado.web.RequestHandler): def get(self): time.slee ...
随机推荐
- mysql驱动参数变化
在java平台使用的mysql jdbc驱动为:mysql-connector-java. 在项目中添加如下依赖: <dependency> <groupId>mysql< ...
- VisualStuido C# Files 的值“<<<<<<< .mine”无效。路径中具有非法字符。
直接在项目中搜是搜不到<<<<<<.mine,可以直接删除obj文件夹.
- Java8新特性_日期时间新类 LocalDate、LocalTime、LocalDateTime
import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeForma ...
- 为数据库重新生成log文件
1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启sql server 5.此时打开企业管理器时会出现置疑,先不 ...
- 【noip 2011】提高组Day1T3.Mayan游戏
Description Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是 ...
- qt5学习目录
qt5下载与安装,VS2017的环境配置 q ...
- [C++]Linux之文件拷贝在系统调用和C库函数下的效率比较
声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步- 0.0 题目: 1. 分别利用文件的系统调用r ...
- vue请求java服务端并返回数据
最近在自学vue怎么与java进行数据交互.其实axios还是挺简单的,与ajax请求几乎一样,无外乎也就是要解决下跨域的问题. 废话不多说了,直接贴代码,一看就懂! //向springmvc Con ...
- window 安装gcc交叉编译器
参考网址: https://blog.csdn.net/zsy19881226/article/details/46952535
- linux 根据Pid获取 进程内容
ps -ef | grep 753 | grep -v 'grep' | awk '{print $NF}'