为request.Session()对象设置主机和端口

时间:2019-10-28 18:52:13

标签: python python-requests

如何配置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'

1 个答案:

答案 0 :(得分:1)

摘自requests关于会话的文档:

  

Session对象允许您在某些对象之间持久保留某些参数   要求。它还会在所有由   会话实例,并将使用urllib3的连接池。因此,如果   您正在向同一主机(基础TCP)发出多个请求   连接将被重用,这可能会导致   性能提高(请参阅HTTP持久连接)。

因此,每次您提供网址时。在后台,请求将不会为每个请求创建新的TCP套接字连接。它将重新使用连接池中与该主机和端口的TCP套接字连接。

会话背后的主要思想是在每个请求之间共享参数和cookie,而不必在每个请求中单独设置它们。并在引擎盖下将保持连接。但您仍需要在每次通话中提供完整的网址

相关问题