跳到主要内容

asyncio

Asyncio 异步 I/O

概念要点:事件循环、协程、任务、await/async、I/O 密集型高并发。

基本用法

import asyncio

async def fetch(i):
await asyncio.sleep(0.1)
return i

async def main():
r = await fetch(1)
print(r)

asyncio.run(main())

任务与并发

async def main():
tasks = [asyncio.create_task(fetch(i)) for i in range(5)]
res = await asyncio.gather(*tasks)
print(res)

超时/取消/异常

async def main():
try:
return await asyncio.wait_for(fetch(1), timeout=0.05)
except asyncio.TimeoutError:
return 'timeout'

t = asyncio.create_task(fetch(2))
t.cancel()
try:
await t
except asyncio.CancelledError:
print('cancelled')