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

Bra*_*mon 6 python urllib3 python-requests

我在一些代码片段和请求文档中看到过这样的事情:

import requests
sess = requests.Session()
adapter = requests.adapters.HTTPAdapter(max_retries=20)
sess.mount('https://', adapter)
Run Code Online (Sandbox Code Playgroud)

我试图更好地了解.mount()这里的作用。在这种情况下,是否只是增加对所有调用的允许重试次数sess.request()?它是否在模拟以下内容:

for _ in range(max_retries):
    try:
        return sess.request(...)
    except:
        pass
Run Code Online (Sandbox Code Playgroud)

或者还有更多事情发生吗?

我知道requests.Session实例是用具有的适配器初始化的max_retries=0,因此以上只是基于此的预感。

.mount()在这种情况下,了解如何具体改变会话对象的行为会很有帮助。

Sra*_*raw 14

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

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

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

选择权交给你了。