116、asyncio 异步编程(二):Task、Future、gather、create_task 并发模式

📅 2026/7/3 3:30:46
116、asyncio 异步编程(二):Task、Future、gather、create_task 并发模式
116、asyncio 异步编程(二):Task、Future、gather、create_task 并发模式上周五晚上十一点,线上服务突然报警——某个爬虫任务队列堆积到两万条。我盯着日志里那行RuntimeError: Task Task pending ... got Future Future pending ... attached to a different loop,心里骂了一句:又是事件循环混用的问题。这种坑,但凡用 asyncio 写过并发代码的人,十有八九都踩过。今天这篇笔记,我就从这几个核心对象讲起,把 Task、Future、gather、create_task 这些“并发武器”的脾气摸清楚。Task 和 Future:别被官方文档绕晕先说说 Future。很多人一上来就被“Future 是协程的最终结果容器”这种定义搞懵了。我换个说法:Future 就是一个“占位符”,协程跑完之前它空着,跑完了它里面放结果或者异常。importasyncioasyncdef