热门标签:
Q:

Python-Requests(>=1。*):如何禁用keep-alive?

我正在尝试使用Requests模块编写一个简单的网络爬虫,我想知道如何禁用its-default-keep-alive feauture。

我试过使用:

s = requests.session()
s.config['keep_alive'] = False

但是,我得到一个错误,指出session对象没有属性'config',我认为它是随着新版本而改变的,但我似乎无法在官方文档中找到如何做到这一点。

事实是,当我在特定网站上运行爬虫时,它最多只能获得五个页面,然后无限循环,所以我认为它与keep-alive功能有关!

Ps:Requests是web-crawler的好模块吗? 有更适应的吗?

谢谢!

原网址
A:

这有效

s = requests.session()
s.keep_alive = False

在类似问题的评论中回答。

所有回答

共 2 条

author avatar

我不确定,但您可以尝试在使用请求发送GET请求时将{"Connection":"close"}作为HTTP标头传递。 这将在服务器返回响应后立即关闭连接。

>>> headers = {"Connection": "close"}
>>> r = requests.get('https://example.xcom', headers=headers)
author avatar

正如@praveen建议的那样,我们期望使用HTTP/1.1headerConnection: close通知服务器在响应完成后应该关闭连接。

以下是它在RFC2616中的描述:

HTTP/1.1为发送方定义了"关闭"连接选项,以表示在响应完成后连接将关闭。 例如,

Connection: close

在请求或响应头字段中,指示在当前请求/响应完成后,不应将连接视为"持久"(第8.1节)。

不支持持久连接的HTTP/1.1应用程序必须在每条消息中包含"关闭"连接选项。

相似问题