你的日志在轮换代理,你的请求却还在用旧的。
把选中的端点一路追踪到真正发送请求的那次 HTTP 调用,而不是假设打印出一个新值就等于改变了请求的配置。
选择器先打印代理 A,再打印代理 B。请求日志却一直显示代理 A。解释这个矛盾并不需要什么网络服务:调用方很可能把选择器的返回值丢掉了。
把这个值一路追踪到真正发送请求的那次调用:
endpoint = choose_proxy()
routes = {'http': endpoint, 'https': endpoint}
response = session.get(target_url, proxies=routes, timeout=15)
这段代码假定已有 Requests 会话和一个校验过的代理 URL。对于允许经由公共中间人访问的公共请求,免费代理列表提供的候选 URL 会走同一条“选择—发送”路径。受支持的关键字是 proxies。一个只打印映射、或者返回一个没人赋值的映射的辅助函数,无法代替这里传入的映射。
让选中的路由只留在本次操作内部。在并发代码里,共享的 current_proxy 字段可能在记录日志和发送之间被改掉。于是另一个 worker 的选择就会出现在错误的结果旁边。
用尝试标识把选择、发送配置和结果串起来。当完整 URL 含有凭据时,记录安全的端点标识,而不是完整 URL。
如果这些值彼此一致,但观测到的公网 IP 没有变化,你就碰到了另一个问题:所选端点是否提供了不同的出口,还是轮换网关保持了连接。先确定应用到底有没有发出它声称选中的路由。否则,对服务商一侧的猜测可能把一根过期的变量掩盖好几个小时。