目录
前言 .1
第1 章 什么是异步 5
1.1 ThreadBots 餐厅 .5
1.2 结语 10
1.3 Asyncio 试图解决什么问题? 11
第2 章 关于线程的真相 15
2.1 线程的优势 . 16
2.2 线程的缺点 . 18
2.3 案例研究:机器人和餐具 21
第3 章 asyncio 演练 28
3.1 快速入门 29
3.2 异步之塔 36
3.3 协程 39
3.3.1 新关键词:async def 40
3.3.2 新的 await 关键字 . 43
3.4 事件循环 46
3.5 任务和期望 . 49
3.6 异步上下文管理器:async with 56
3.7 异步迭代器:async for . 61
3.8 使用异步生成器使代码更简单 . 65
3.9 异步推导 66
3.10 优雅的关闭和启动 69
3.10.1 Gather() 中的 return_exceptions=True 是什么? . 74
3.10.2 信号 76
3.10.3 在关闭期间等待执行程序 82
第4 章 20 个你没有使用过的 asyncio 库 88
4.1 Streams ( 标准库) 89
4.1.1 案例研究:消息队列 89
4.1.2 案例研究:改进消息队列 . 98
4.2 Twisted 103
4.3 Janus 队列 . 106
4.4 aiohttp . 108
4.4.1 案例研究:Hello World 108
4.4.2 案例研究:爬取新闻网站 109
4.5 ZeroMQ . 114
4.5.1 案例研究:多个套接字 115
4.5.2 案例研究:应用性能监控 119
4.6 asyncpg 和Sanic 128
4.7 其他异步库和资源 146
第5 章 总结 149
附录A Python 中异步特性的发展简史 . 151
附录B 补充材料 155