Tornado 异步服务器和客户端模块client

一、Tornado 异步服务器和客户端模块client

@tornado.gen.coroutine与yield tornado.gen.sleep(3)构建异步服务

time.sleep(5) # 同步实现

async_server.py

 import tornado.ioloop
    import tornado.web
    import os
    import time
    import datetime as dt
    
    class SleepHandler(tornado.web.RequestHandler):
        @tornado.gen.coroutine # 做协程 与yield tornado 实现异步
        def get(self):
            # time.sleep(5)  # 同步实现
            yield tornado.gen.sleep(3)
            self.write(str(dt.datetime.now()))
    
    def make_app():
        return tornado.web.Application(
            [
            (r"/sleep", SleepHandler),  # r"" 后面是路径
            ],
            debug=True
        )
    
    if __name__ == "__main__":
        app = make_app()
        app.listen(8888)
        tornado.ioloop.IOLoop.current().start()

async_client.py

"""
Created on 19-2-19

@author: 260207

@requirement:Anaconda 4.3.0 (64-bit) Python3.6 

@description:
"""
import requests
import time

import tornado.gen
import tornado.httpclient
import tornado.ioloop
from tornado import gen

N = 3
URL = 'http://localhost:8888/sleep'

# 异步方式请求 以N=3为例:async 3.0119595527648926
@gen.coroutine
def main():
    http_client = tornado.httpclient.AsyncHTTPClient()
    response = yield [
        http_client.fetch(URL) for i in range(N)
    ]

beg1 = time.time()
tornado.ioloop.IOLoop.current().run_sync(main)
print('async', time.time() - beg1)


# 同步方式请求 时间翻倍req 9.040810823440552
beg = time.time()
for i in range(N):
    requests.get(URL)
print('req', time.time()-beg)

**

建立两个.py文件进行异步与同步测试,同步方式请求时间较长,三秒请求三次,时间九秒多,异步时间三秒多,相互干扰小,速度快。

**
在这里插入图片描述
随笔:今天是元宵节,附上一张走心的图片,祝福团圆、快乐。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值