asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。

asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。

我们先安装aiohttp

pip install aiohttp

然后编写一个HTTP服务器,分别处理以下URL:

  • / - 首页返回b'<h1>Index</h1>'

  • /hello/{name} - 根据URL参数返回文本hello, %s!

代码如下:

import asynciofrom aiohttp import webasync def index(request):await asyncio.sleep(0.5)return web.Response(body=b'<h1>Index</h1>')async def hello(request):await asyncio.sleep(0.5)text = '<h1>hello, %s!</h1>' % request.match_info['name']return web.Response(body=text.encode('utf-8'))async def init(loop):app = web.Application(loop=loop)app.router.add_route('GET', '/', index)app.router.add_route('GET', '/hello/{name}', hello)srv = await loop.create_server(app.make_handler(), '127.0.0.1', 8000)print('Server started at http://127.0.0.1:8000...')return srvloop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

注意aiohttp的初始化函数init()也是一个coroutineloop.create_server()则利用asyncio创建TCP服务。

python aiohttp模块相关推荐

  1. python爬虫02-提升爬取效率、多线程,多线程传参,多进程,线程及线程池概念,协程,多任务异步协程,异步请求aiohttp模块,视频站工作原理

    1.提升爬取效率 使用多线程,多进程,携程,异步 2.多线程 进程是资源单位,每个进程,都会有一个默认的主线程 线程是执行单位 执行多线程需要导包: from threading import Thr ...

  2. 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, ...

  3. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  4. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  5. 关于使用python logging模块的几点总结

    关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...

  6. python高级-模块(14)

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...

  7. 转载: Python os 模块的功能以及子函数介绍

    原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...

  8. 简单介绍python process模块

    在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...

  9. python io模块_python中的StringIO模块

    原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...

  10. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

最新文章

  1. Myeclipse 10 利用工具生成网络服务接口并调用
  2. 2.2 PostgreSQL 概念
  3. layui的checkbox示例
  4. Zend Studio使用教程之升级Zend Studio(1/3)
  5. matlab显示曲线图中某个点的坐标值
  6. centos 安装PHP7.0
  7. 20135316王剑桥Linux内核学习笔记第三周
  8. [expimp]exp导出笔记
  9. python从入门到精通百度云-python从入门到精通视频教程百度云资源
  10. Java getResourceAsStream返回为空的问题
  11. cass打开dwg文件无效_DWG文件软件打开显示图形文件无效
  12. ssl证书 嵌入式设备_ngx_http_ssl_module
  13. html、css做一个带搜索图标的搜索框(方法分享)
  14. 读书笔记:遇见未知的自己
  15. Learning Agile software Development
  16. 四年磨一剑:我是如何拿到蚂蚁offer的?
  17. 无需越狱或安装应用在 iPhone 和 iPad 上打开 Flash 视频
  18. cocosCreator日历插件
  19. 计算机课屏幕以锁定,电脑无限宝锁定课堂怎么办
  20. 【Android -- 写作工具】Markdown 图片

热门文章

  1. 管理感悟:如何看待培训
  2. 正态分布里的西格玛_七大数据陷阱之油腻的统计学:正态分布来了
  3. 乐高创意机器人moc_乐高MOC佳作欣赏丨机械之美机器人乐高作品集15
  4. php ‘\n‘ 与 “\n“的区别
  5. 客户说发货慢怎么回复_给客户发完报价没回复,怎么办?
  6. python数据分析案例分析题_7个python案例中的数据思维
  7. CommandLineToArgvW
  8. 1. COM编程——什么是组件
  9. string中c_str()用法
  10. VMware的配置问题集锦(更新中......)