如何配置Session()
对象,以使通过它的所有请求使用相同的主机和端口?
当前,我将执行以下操作:
urls = [f'https://somehost.com:1234/query?page={i}' for i in range(10)]
s = requests.Session()
for url in urls:
r = s.get(url)
是否没有办法为持久连接显式设置主机和端口?例如:
s = requests.Session()
s.host = 'https://somehost.com'
s.port = '1234'
答案 0 :(得分:1)
摘自requests
关于会话的文档:
Session对象允许您在某些对象之间持久保留某些参数 要求。它还会在所有由 会话实例,并将使用urllib3的连接池。因此,如果 您正在向同一主机(基础TCP)发出多个请求 连接将被重用,这可能会导致 性能提高(请参阅HTTP持久连接)。
因此,每次您提供网址时。在后台,请求将不会为每个请求创建新的TCP套接字连接。它将重新使用连接池中与该主机和端口的TCP套接字连接。
会话背后的主要思想是在每个请求之间共享参数和cookie,而不必在每个请求中单独设置它们。并在引擎盖下将保持连接。但您仍需要在每次通话中提供完整的网址