Lee*_*ren 6 session request python-requests grequests
目前,我执行以下操作来设置grequest包装器的最大连接重试次数:
self._s = Session()
retries = Retry(total=5, status_forcelist=[500, 502, 503, 504])
self._s.mount('http://, HTTPAdapter(max_retries=retries))
Run Code Online (Sandbox Code Playgroud)
然后我grequest用会话创建一堆对象self._s作为参数之一.例如,创建一组GET请求将使用以下内容完成:
requests = [grequests.get(url, ..., 'session': self._s')]
最后,这些都是最终发布的grequests.map(requests, ...).
问题是我想要一种方法,使最大重试次数持续存在,并在连接池的所有连接中共享.重试似乎仍然仅适用于单个连接.有没有办法做到这一点?这是不可能的,因为新的Retry()对象似乎是在总呼叫每次减少时创建的吗?
我认为你不走运。文档字符串Retry说(摘录):
每次重试尝试都会创建一个具有更新值的新 Retry 对象,以便可以安全地重用它们。
因此,正如您所说,每个连接都会创建一个新对象......这是通过设计完成的。
此外,Retry对象本身允许线程:它在连接尝试之间休眠。因此,通过这种设计,一个Retry对象必须与一个线程关联。对不起。这是一个链接,urllib.utils.retry以防有帮助。
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |