有时我看到人们使用requests.Session对象调用Web API:
client = requests.session()
resp = client.get(url='...')
但有时他们不会:
resp = requests.get(url='...')
有人可以解释我们应该何时使用Session
以及何时不需要它们?
答案 0 :(得分:16)
在幕后,requests.get()
为每个请求创建一个新的Session
对象。
通过预先创建会话对象,您可以重新使用会话;例如,这允许您持久化Cookie,并允许您重复使用设置以用于所有连接,例如标头和查询参数。最重要的是,会话让您利用连接池;重用与同一主机的连接。
Session对象允许您跨请求保留某些参数。它还会在从Session实例发出的所有请求中保留cookie,并使用urllib3的连接池。因此,如果您向同一主机发出多个请求,则将重用底层TCP连接,这可能会显着提高性能(请参阅HTTP persistent connection)。
答案 1 :(得分:1)
Session对象允许您跨请求保留某些参数。它还会在从Session实例发出的所有请求中保留cookie。