当前位置: 首页 > 面试题库 >

python请求模块和连接重用

干旺
2023-03-14
问题内容

我正在使用python的request模块进行HTTP通信,并且想知道如何重用已经建立的TCP连接?请求模块是无状态的,如果我反复调用get以获得相同的URL,难道每次都不会创建一个新的连接吗?

谢谢!!


问题答案:

请求模块是无状态的,如果我反复调用get以获得相同的URL,它是否每次都会创建一个新的连接?

requests模块是不是无状态的; 它只是让您忽略状态,并且可以选择使用全局单例状态。*

而且它(或者更确切地说是基础库之一urllib3)维护着以(主机名,端口)对为键的连接池,因此如果可以的话,它通常只是神奇地重用了一个连接。

如文档所述:

好消息-感谢urllib3,保持活动状态在会话中是100%自动的!您在会话中发出的任何请求将自动重用适当的连接!

请注意,只有在读取了所有主体数据后,连接才会释放回池中以供重用。确保设置stream
False或读取对象的content属性Response

那么,“如果可以”是什么意思?就像上面的文档所暗示的那样,如果要保持流式响应对象处于活动状态,则显然它们的连接将无法重用。

此外,连接池确实是一个有限的缓存,而不是无限的,所以如果您的垃圾邮件了一吨的连接,其中两个是在同一台服务器,你不会 总是 重复使用的连接,只需 经常
。但是通常,这就是您真正想要的。

*这里涉及的特定状态是运输适配器。每个会话都有一个传输适配器。您可以手动指定适配器,也可以指定全局默认值,也可以只使用默认的全局默认值,该默认值基本上只是包装了一个urllib3.PoolManager用于管理其HTTP连接的内容。有关更多信息,请阅读文档。



 类似资料:
  • 问题内容: 我想知道,您如何关闭与请求(python-requests.org)的连接? 有了它,但我要如何做请求相同的? 码: 问题答案: 正如这里所讨论的,实际上没有HTTP连接之类的东西,而httplib所指的HTTPConnection实际上是底层的TCP连接,它根本不了解您的请求。索取摘要,您将永远看不到它。 实际上,最新版本的Requests确实使TCP连接保持活动状态。.如果您确实希

  • 问题内容: 我正在使用“请求:用于人类的HTTP”库,但出现了这个奇怪的错误,我不知道这是什么意思。 有人有主意吗? 问题答案: 您需要包括协议方案: 没有这个部分,就不知道如何连接到远程服务器。 请注意,协议方案必须全部为小写。如果您的URL以例如开头,则也不会找到连接适配器。

  • 问题内容: 简短,简单的介绍了出色的Python 请求模块。 我似乎在文档中找不到变量“代理”应包含的内容。当我发送带有标准“ IP:PORT”值的字典时,它拒绝要求2个值。所以,我猜(因为文档中似乎没有涵盖),第一个值是ip,第二个值是端口? 文档只提到了这一点: 代理–(可选)字典到代理URL的映射协议。 所以我尝试了这个……我该怎么办? 在将它们放入字典之前,我应该将它们转换为某种类型吗?

  • 问题内容: 我已经在Windows 7上安装了python 2.7.0和Teradata模块。我无法从python连接和查询TD。 现在,我想在我的源代码中导入teradata模块并执行以下操作- 向Teradata触发查询并获取结果集。 检查是否已连接到Teradata。 请帮我编写与我刚接触Python相同的代码,并且没有可用的信息连接到Teradata。 问题答案: 有多种方法可以连接到Te

  • 本文向大家介绍Python如何使用paramiko模块连接linux,包括了Python如何使用paramiko模块连接linux的使用技巧和注意事项,需要的朋友参考一下 python程序需要连接linux时,需要使用密码或者秘钥验证以登录os进行命令操作或者文件传输,python中实现此功能的模块为paramiko;下面是该模块的基础用法 下面是通过密码进行linux登录执行命令和文件传输示例

  • 问题内容: 在Windows上安装请求模块(python 2.7)时遇到问题。 根据文档尝试了以下步骤: 1个 错误 2 错误 3 错误 任何人都可以建议如何在Windows上安装该模块,而不下载任何新内容。 问题答案: 这里有四个选项: 进行设置。您创建的每个虚拟环境都将自动具有。 进行全局设置。 了解如何手动安装Python软件包-在大多数情况下,下载,解压缩(但并非总是如此)很简单。 使用C