代码之家  ›  专栏  ›  技术社区  ›  Leeren

使Python“请求”模块的连接池大小非常大的缺点是什么?

  •  4
  • Leeren  · 技术社区  · 7 年前

    在安装 HTTPAdapter 在一个 requests.Session() 我遇到了一个问题,连接最终被丢弃,因为我批量发出异步调用(对于同一主机,即属于同一连接池),其中每个批大小都高于最大池大小。当然,解决方案是增加最大池大小。

    我想知道的是,较大批量(最大池大小较大)的较少迭代与较小批量(池大小较小)的较大迭代之间的权衡是什么。将池大小扩展到无穷大并在一个批处理请求中发出所有异步调用(属于同一个池)有什么错?

    1 回复  |  直到 7 年前
        1
  •  1
  •   user2096803 user2096803    7 年前

    在里面 requests.adapters HTTPAdapter 连接池的设置可能直接传递给 urllib3 's PoolManager .

    调整ConnectionPool的大小以允许更多连接没有问题。然而,有一个缺点你应该考虑。。。主机响应您请求的能力。根据我的经验,这将是真正的瓶颈。事实上 urllib3 以上链接:

    但是,如果指定block=True,则最多可以有maxsize 连接打开到特定主机。任何新请求都将被阻止 直到池中的连接可用。这是一个很好的方式 防止在多线程中使用过多连接淹没主机 应用。