Skip to content
python
import asyncio

async def worker(n):
    try:
        print(f"worker {n} started")
        await asyncio.sleep(2)
        print(f"worker {n} finished")
        return n * 10
    except asyncio.CancelledError:
        print(f"worker {n} was cancelled")
        raise

async def main():
    # create_task 返回 Task,并立即调度
    t1 = asyncio.create_task(worker(1))
    t2 = asyncio.create_task(worker(2))

    await asyncio.sleep(0.5)
    # 取消其中一个
    t2.cancel()
    try:
        r1 = await t1
        r2 = await t2
    except asyncio.CancelledError:
        # 如果你 await 已取消的 task,会在这里收到异常
        pass

asyncio.run(main())

欢迎来到 Laazua 的站点