Requests 的文档给出了一些这样的代码
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
如果我想使用request.Session的连接池特性,是否每次发送请求都需要实例化一个新的Session?如果我不需要新的Session,如何检查旧的会话是否有效现在?
Requests 的文档给出了一些这样的代码
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
如果我想使用request.Session的连接池特性,是否每次发送请求都需要实例化一个新的Session?如果我不需要新的Session,如何检查旧的会话是否有效现在?
如果要使用连接池,则不想创建新会话。连接池由Session
对象管理,您应该通过它传递所有请求。
通常,如果您在程序中使用 Requests 执行两个或三个以上的 HTTP 请求,您应该创建一个Session
对象并通过它运行所有请求。这将为您提供 Requests 必须提供的所有好处,例如 cookie 持久性和连接池。
所以,我查看了文档并且......我认为它会自动让您的会话保持活跃。
如果您对终止会话有任何问题,请告诉我,但假设 Requests 会为您处理。我可能误解了文档,但我认为您不必担心。
从文档中:
活着
好消息——感谢 urllib3,在会话中保持活动是 100% 自动的!您在会话中发出的任何请求都将自动重用相应的连接!
请注意,只有在读取所有主体数据后,连接才会释放回池中以供重用;请务必将 stream 设置为 False 或读取 Response 对象的 content 属性。