【问题标题】:What is the purpose of mounting a Session object?挂载 Session 对象的目的是什么?
【发布时间】:2018-11-29 01:37:20
【问题描述】:

我在一些代码 sn-ps 和 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() 在这种情况下具体改变会话对象的行为会很有帮助。

【问题讨论】:

    标签: python python-requests urllib3


    【解决方案1】:

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

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

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

    选择权交给你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2020-11-07
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      相关资源
      最近更新 更多