至于现在我使用Requests如下:
for url in urls:
try:
req1 = requests.request("GET", url, timeout=5)
req2 = requests.request("POST", url, data=foo(req1.text), timeout=5)
except:
time.sleep(120)
continue
问题在于,由于连接速度慢,请求会频繁挂起,导致进程卡住并在达到最大重试次数后抛出ConnectionClosed异常。
根据需求,没有必要正确处理每个网址,这意味着只要处理了大部分网址,如果连接失败,可以跳过一些网址。
所以我用上面的代码包装上面的代码......除了...块:
DataContext
现在的问题是,虽然可以在理论上迭代网址,但只能处理一些网址。实际上,在抛出第一个异常之后,所有后续请求都会遇到相同的连接问题,也就是说,进程实际上属于无限的“time.sleep()”。
但是,如果在抛出异常时重新启动脚本,连接问题将不会持续存在,至少它可以在很长时间内顺利运行。
我想我必须忽略一些机制,但我不太确定。是否有任何连接重用阻碍了?在这种情况下,如何在异常时重置连接?我应该使用每次迭代后关闭的会话吗?在这种情况下,我怎样才能达到体面的效率?
提前致谢。