挂载 Session 对象的目的是什么?

What is the purpose of mounting a Session object?

我在一些代码片段和 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() 如何具体改变会话对象的行为会很有帮助。

.mount() 确实如您所想,它只是将自定义适配器安装到给定模式。

在您给出的示例中,它只是增加了允许的重试次数。但实际上它可以根据使用的适配器做更多事情。

例如,您还可以通过HTTPAdapter(pool_maxsize=100)更改连接池大小。您可以通过创建一个完全自定义的适配器来做一些进一步的自定义,例如 MyHTTPAdapter.

选择权交给你了。