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

Fre*_*Pym 20 python python-requests

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

client = requests.session()
resp = client.get(url='...')
Run Code Online (Sandbox Code Playgroud)

但有时它们不会:

resp = requests.get(url='...')
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 25

在引擎盖下,为每个请求requests.get()创建一个新Session对象.

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

请参阅Sessions文档:

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

  • @FredPym:正是。一旦您与同一主机建立多个连接,重用会话是一个好主意。 (3认同)