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

时间:2018-06-20 02:38:14

标签: python python-requests urllib3

我在一些代码片段和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()在这种情况下如何特别改变会话对象的行为将很有帮助。

1 个答案:

答案 0 :(得分:0)

.mount()确实按照您的想法做,只是将自定义适配器安装到给定的架构上。

在给定的示例中,它确实增加了允许的重试次数。但是实际上,根据使用的适配器,它还能做更多的事情。

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

选择权交给了你。