Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
现代⽅方式使⽤用asyncio Kevin
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
asyncio • 为什什么我们需要异步? • 为什什么选择asyncio? • 如何优雅的编写asyncio程序? • asyncio的其他
Slide 4
Slide 4 text
asyncio • 为什什么我们需要异步? • 为什什么选择asyncio? • 如何优雅的编写asyncio程序? • asyncio的其他
Slide 5
Slide 5 text
asyncio • 为什什么我们需要异步? • 为什什么选择asyncio? • 如何优雅的编写asyncio程序? • asyncio的其他
Slide 6
Slide 6 text
gevent/eventlet
Slide 7
Slide 7 text
gevent/eventlet
Slide 8
Slide 8 text
相⽐比gevent • 官⽅方⽀支持,未来的⽅方向 • 显式切换 • 显式处理理条件竞争问题更更容易易 • 显式控制上下⽂文切换,不不再踩坑 • 更更容易易兼容
Slide 9
Slide 9 text
asyncio • 为什什么我们需要异步? • 为什什么选择asyncio? • 如何优雅的编写asyncio程序? • asyncio的其他
Slide 10
Slide 10 text
举个例例⼦子
Slide 11
Slide 11 text
举个例例⼦子
Slide 12
Slide 12 text
举个例例⼦子
Slide 13
Slide 13 text
run&serve_forever
Slide 14
Slide 14 text
asyncio API
Slide 15
Slide 15 text
asyncio API • 优先使⽤用⾼高级API,提供更更简单的使⽤用⽅方法 • 只有在需要时,才选择使⽤用底层API
Slide 16
Slide 16 text
再举个例例⼦子
Slide 17
Slide 17 text
gather
Slide 18
Slide 18 text
contextvar
Slide 19
Slide 19 text
contextvar
Slide 20
Slide 20 text
async传染
Slide 21
Slide 21 text
async传染
Slide 22
Slide 22 text
async传染
Slide 23
Slide 23 text
async传染
Slide 24
Slide 24 text
Django Channels
Slide 25
Slide 25 text
flask
Slide 26
Slide 26 text
responder
Slide 27
Slide 27 text
asyncio调试 https://docs.python.org/3/library/asyncio-dev.html#debug-mode
Slide 28
Slide 28 text
aiomonitor
Slide 29
Slide 29 text
aiomonitor
Slide 30
Slide 30 text
asyncio • 为什什么我们需要异步? • 为什什么选择asyncio? • 如何优雅的编写asyncio程序? • asyncio的其他
Slide 31
Slide 31 text
其他:优化 • uvloop • 新版本也是⼀一种优化:
Slide 32
Slide 32 text
其他:注意事项 • 单独使⽤用asyncio仍旧是单线程模型 • 只有IO才可以并发 • asyncio会带来CPU压⼒力力 • event loop和上下⽂文切换在⾼高并发场景下仍旧有明显消耗
Slide 33
Slide 33 text
Thank You!