如何使用 aiohttp 在客户端设置每秒最大请求数(限制它们)?
原文由 v18o 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何使用 aiohttp 在客户端设置每秒最大请求数(限制它们)?
原文由 v18o 发布,翻译遵循 CC BY-SA 4.0 许可协议
虽然它并不是对 每秒 请求数的精确限制,但请注意,自 v2.0 以来,当使用 ClientSession
、 aiohttp
时,自动将并发连接数限制为 100。
您可以通过创建自己的 TCPConnector
并将其传递到 ClientSession
来修改限制。例如,要创建一个限制为 50 个并发请求的客户端:
import aiohttp
connector = aiohttp.TCPConnector(limit=50)
client = aiohttp.ClientSession(connector=connector)
如果它更适合您的用例,还有一个 limit_per_host
参数(默认情况下关闭),您可以传递该参数以限制同时连接到同一“端点”的数量。根据文档:
limit_per_host
(int
) – 限制同时连接到同一端点。如果端点具有相等的(host, port, is_ssl)
三重,则端点相同。
用法示例:
import aiohttp
connector = aiohttp.TCPConnector(limit_per_host=50)
client = aiohttp.ClientSession(connector=connector)
原文由 Mark Amery 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答857 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.6k 阅读
2 回答2.6k 阅读✓ 已解决
1 回答2k 阅读
2 回答788 阅读✓ 已解决
1.2k 阅读
我在这里找到了一种可能的解决方案:http: //compiletoi.net/fast-scraping-in-python-with-asyncio.html