如何正确处理请求中的超时

时间:2018-02-28 13:11:05

标签: python python-requests

至于现在我使用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()”。

但是,如果在抛出异常时重新启动脚本,连接问题将不会持续存在,至少它可以在很长时间内顺利运行。

我想我必须忽略一些机制,但我不太确定。是否有任何连接重用阻碍了?在这种情况下,如何在异常时重置连接?我应该使用每次迭代后关闭的会话吗?在这种情况下,我怎样才能达到体面的效率?

提前致谢。

相关文章:https://github.com/requests/requests/issues/520

0 个答案:

没有答案