requests 连贯复用
家喻户晓,应用requests.Session()能够复用连贯,并发时能大幅晋升效率。
Session连接数
在同一Session中,requests库默认的连接池和最大连接数都是10。
连接池能够了解为host,最大连接数能够了解为同一个host的连接数。
这样的话,并发数就会被限度在10。
所以在vs code中调试时,发现不论代码中并发写多大,都只有10个虚构线程。
解决办法 session.mount()
在间接调用requests时,默认应用了上面的配置:
self.mount('https://', HTTPAdapter())self.mount('http://', HTTPAdapter())
其中,HTTPAdapter()
默认参数为pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False
pool_connections
是最多连贯的不同host数,pool_maxsize
同一host最多连接数。
所以能够应用上面的办法批改连接数:
s = requests.Session()s.mount('https://', requests.adapters.HTTPAdapter(pool_connections=20, pool_maxsize=100))s.mount('http://', requests.adapters.HTTPAdapter(pool_connections=20, pool_maxsize=100))# http https 别离对应各自类型,只是须要别离设置
批改之后再到并发中发送申请,并发数就不会限度为10了。