代码之家  ›  专栏  ›  技术社区  ›  Brad Solomon

装载会话对象的目的是什么?

  •  0
  • Brad Solomon  · 技术社区  · 6 年前

    我在一些代码片段和 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 ,所以以上只是基于此的预感。

    如果你能知道 () 在这种情况下正在更改会话对象的行为。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sraw    6 年前

    .mount() 真正做到了你所想的,它只是为给定的模式安装了一个自定义适配器。

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

    例如,您还可以通过 HTTPAdapter(pool_maxsize=100) . 您可以通过创建一个完全定制的适配器来进行进一步的定制,例如 MyHTTPAdapter .

    选择权交给你了。