空的代理池:失败、等待还是使用已批准的兜底方案
当所有代理都不可用时,应停止、在预算内等待,或使用已批准的兜底方案,而不是悄无声息地继续而没有任何路由。
轮换器移除了最后一个符合条件的端点。下一个任务会怎样?
这个决定应当是明确的。空列表并不是某种特殊类型的可用代理。随机选择的异常、缺失的元数据字段,以及返回 None,都可能把下一层推向不同的路径。
对于需要已批准代理路由的任务,在派发前选择以下结果之一:
- 在任务剩余截止时间内,等待一次已知的恢复或刷新。
- 以明确的“池不可用”结果失败。
- 使用另行配置并已批准的兜底方案。
静默省略代理则是完全不同的策略。取决于客户端,它可能启用环境默认值或直连路径。由此得到的成功 HTTP 响应,可能掩盖了所需中间层从未被使用这一事实。
要把提供方返回的空响应,与所有端点都在临时冷却的池区分开来。前者可能需要发现服务的诊断;后者可能已经有计划好的恢复时间。在紧密循环中反复拉取同一份空列表,对两者都没有帮助。
报告池的状态和所做的决定,并移除其中的机密信息。“没有可用代理;任务已停止”比来自调用方根本无意选择的路径的通用连接错误更便于采取行动。