我在一些代码片段和Requests documentation中看到了类似的内容:
import requests
sess = requests.Session()
adapter = requests.adapters.HTTPAdapter(max_retries=20)
sess.mount('https://', adapter)
我正在尝试更好地了解.mount()
在这里所做的事情。在这种情况下,是否仅增加对sess.request()
的所有呼叫的允许重试次数?它是模拟类似的东西吗?
for _ in range(max_retries):
try:
return sess.request(...)
except:
pass
还是还有更多事情要做?
我知道requests.Session
实例是initialized,带有带有max_retries=0
的适配器,因此以上只是基于此的预感。
了解.mount()
在这种情况下如何特别改变会话对象的行为将很有帮助。
答案 0 :(得分:0)
.mount()
确实按照您的想法做,只是将自定义适配器安装到给定的架构上。
在给定的示例中,它确实增加了允许的重试次数。但是实际上,根据使用的适配器,它还能做更多的事情。
例如,您还可以通过HTTPAdapter(pool_maxsize=100)
更改连接池大小。您可以通过创建一个完整的定制适配器(例如MyHTTPAdapter
)来做一些进一步的定制。
选择权交给了你。