使用requests.get()和requests.session()。get()之间的区别?

时间:2015-10-07 07:29:27

标签: python python-requests

有时我看到人们使用requests.Session对象调用Web API:

client = requests.session()
resp = client.get(url='...')

但有时他们不会:

resp = requests.get(url='...')

有人可以解释我们应该何时使用Session以及何时不需要它们?

2 个答案:

答案 0 :(得分:16)

在幕后,requests.get()为每个请求创建一个新的Session对象。

通过预先创建会话对象,您可以重新使用会话;例如,这允许您持久化Cookie,并允许您重复使用设置以用于所有连接,例如标头和查询参数。最重要的是,会话让您利用连接池;重用与同一主机的连接。

请参阅Sessions documentation

  

Session对象允许您跨请求保留某些参数。它还会在从Session实例发出的所有请求中保留cookie,并使用urllib3的连接池。因此,如果您向同一主机发出多个请求,则将重用底层TCP连接,这可能会显着提高性能(请参阅HTTP persistent connection)。

答案 1 :(得分:1)

引用documentation

  

Session对象允许您跨请求保留某些参数。它还会在从Session实例发出的所有请求中保留cookie。