2

Requests 的文档给出了一些这样的代码

s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

如果我想使用request.Session的连接池特性,是否每次发送请求都需要实例化一个新的Session?如果我不需要新的Session,如何检查旧的会话是否有效现在?

4

2 回答 2

1

如果要使用连接池,则不想创建新会话。连接池由Session对象管理,您应该通过它传递所有请求。

通常,如果您在程序中使用 Requests 执行两个或三个以上的 HTTP 请求,您应该创建一个Session对象并通过它运行所有请求。这将为您提供 Requests 必须提供的所有好处,例如 cookie 持久性和连接池。

于 2013-06-28T08:17:10.900 回答
0

所以,我查看了文档并且......我认为它会自动让您的会话保持活跃。

如果您对终止会话有任何问题,请告诉我,但假设 Requests 会为您处理。我可能误解了文档,但我认为您不必担心。

从文档中:

活着

好消息——感谢 urllib3,在会话中保持活动是 100% 自动的!您在会话中发出的任何请求都将自动重用相应的连接!

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

于 2013-06-26T18:32:18.223 回答