【发布时间】:2019-05-20 21:11:22
【问题描述】:
我正在使用以下代码通过请求来增加池 maxsize:
import requests
session = requests.Session()
session.mount("https://", requests.adapters.HTTPAdapter(pool_maxsize=50))
session.mount("http://", requests.adapters.HTTPAdapter(pool_maxsize=50))
设置pool_maxsize=1000有缺点吗?
我有时需要 50 - 1000 个连接,但大多数时候我只需要 1 个连接。
或者,有没有办法允许动态调整池大小?
哪种解决方案最好:
- 设置
pool_maxsize = 1000 - 创建 2 个会话,1 个使用
pool_maxsize = 1,另一个使用pool_maxsize=1000。 - 当我需要不同数量的连接时动态改变 pool_maxsize。 (如果可能)
速度是最重要的!
编辑: 大多数时候我都在做正常的请求:
session.get(....)
但有时我会使用 asyncio 来执行大量请求:
import asyncio
async def perform_async_calls(self, session, urls):
loop = asyncio.get_event_loop()
futures = []
for url in urls:
futures.append(loop.run_in_executor(None, session.get, url)
results = []
for future in futures:
result = await future
results.append(result.json())
return results
【问题讨论】:
标签: python asynchronous parallel-processing python-requests python-asyncio