看到别人代码里,有时候使用request.Session对象调用Web API:
client = requests.session()
resp = client.get(url='...')
有时候又是这样的,直接调用:
resp = requests.get(url='...')
这两种使用方法到底有何区别呢?
这就需要从会话谈起了。
在后台,为每个请求requests.get()创建一个新Session对象。
通过预先创建会话对象,您可以重用该会话。例如,这使您可以保留cookie,并让您重新使用用于所有连接的设置,例如标题和查询参数。最重要的是,会话使您可以利用连接池。重用与同一主机的连接。
通过Session对象,您可以在请求中保留某些参数。它还会在所有从Session实例发出的请求中保留cookie,并将使用urllib3的连接池。因此,如果您要向同一主机发出多个请求,则基础TCP连接将被重用,这可能会导致性能显着提高,具体的可以参阅 HTTP持久连接.
mgxcool 博主根据实际案例进行了描述,生动且具体: 如何在requests session中手动设置cookie