python aiohttp_aiohttp
asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。
asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。
我们先安装aiohttp:
pip install aiohttp
然后编写一个HTTP服务器,分别处理以下URL:
/ - 首页返回b'
Index
';
/hello/{name} - 根据URL参数返回文本hello, %s!。
代码如下:
import asyncio
from aiohttp import web
async def index(request):
await asyncio.sleep(0.5)
return web.Response(body=b'
Index
')
async def hello(request):
await asyncio.sleep(0.5)
text = '
hello, %s!
' % 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 srv
loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()
注意aiohttp的初始化函数init()也是一个coroutine,loop.create_server()则利用asyncio创建TCP服务。
参考源码
python aiohttp_aiohttp相关推荐
- Github配置(git+vscode+python+jupyter)
①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...
- 【实验楼】python简明教程
①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...
- 【Kaggle Learn】Python 5-8
五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...
- 【Kaggle Learn】Python 1-4
[Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...
- 使用python愉快地做高数线代题目~
今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...
- python 位运算与等号_Python 运算符
和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...
- python减小内存占用_如何将Python内存占用缩小20倍?
当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...
- python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...
本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...
- python程序如何执行死刑图片_如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...
最新文章
- python程序实例电话本-Python示例
- SAP HR模块的基础数据表和增强配置
- eclipse 全屏插件
- 动手学无人驾驶(5):多传感器数据融合
- (王道408考研数据结构)第五章树-第三节2:二叉树构造和重建
- php用while输出1到100的奇数,用while和for循环分别计算100以内奇数和偶数的和,并输出。...
- APP 自动化框架设计思路分享
- 怎么隐藏鼠标箭头_立刻上手,无鼠标高效操作excel指南(一)
- 前端性能优化的七种方法
- 青蛙的约会(poj 1061)exgcd基础题
- U号租号平台技术服务支持
- 大数据平台回归SQL
- python爬wos数据库,用Python爬行WoS
- java发现城市_java实现简单注册选择所在城市
- 吾爱这个PDF处理小工具,我私藏了一年才偷偷分享!
- 英语总结——新的开始
- 【网络安全】——逻辑漏洞之短信轰炸漏洞
- php 扩展了imagick,PHP编程:PHP使用imagick扩展实现合并图像的方法
- 前途未卜的智能音箱,语音助手还差一个杀手级应用
- BFC与IFC的区别
热门文章
- nginx学习十 ngx_cycle_t 、ngx_connection_t 和ngx_listening_t
- Unknown SSL protocol error in connection to xxx:443
- CentOS 安装及使用 terraform 最新教程
- 万能makefile深入浅出 - 第四篇
- 在hive中对日期数据进行处理,毫秒级时间转化为yyyy-MM-dd格式
- no.5_得到4升的水
- 左神算法:调整搜索二叉树中两个错误的节点(Java版)
- leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)
- 多线程与高并发(四):LockSupport,高频面试题,AQS源码,以及源码阅读方法论
- 【计组实验】P2 Modelsim Verilog单周期处理器开发 MIPS指令集