Skip to content
🔗 分享本题
查看我的学习进度 →

24 模块 Q9 教学图:asyncio 中如何正确处理超时、取消和背压?

🧠 图解记忆:超时是调用方的时间预算,取消需要沿任务树传播,背压用于限制系统接受工作的速度;点击图片可查看原图。

💡 答案要点

超时是调用方的时间预算,取消需要沿任务树传播,背压用于限制系统接受工作的速度。只加 Semaphore 不等于完整背压:还需要有界队列、入队超时、拒绝/降级策略和关闭流程。

捕获 CancelledError 时应完成必要清理后继续抛出;不要把取消当普通失败重试。整体 deadline 应在下游调用之间传递,避免每一层重新获得完整超时。使用 TaskGroup 或结构化并发可以减少孤儿任务。

📚 参考:Python asyncio:超时与取消(wait_for/shield)