您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

aiohttp:设置每秒的最大请求数

aiohttp:设置每秒的最大请求数

在这里找到了一种可能的解决方案:http : //compiletoi.net/fast-scraping-in-python-with- asyncio.html

同时执行3个请求很酷,但是同时执行5000个则不太好。如果您尝试同时执行太多请求,则连接可能会开始关闭,甚至可能被网站禁止

为避免这种情况,可以使用信号灯。它是一个同步工具,可用于限制在某些时候执行某些操作的协程数量。我们只是在创建循环之前创建信号灯,将要允许的并发请求数作为参数传递:

sem = asyncio.Semaphore(5)

然后,我们只需替换:

page = yield from get(url, compress=True)

由同一件事,但受信号量保护:

with (yield from sem):
    page = yield from get(url, compress=True)

这样可以确保最多可以同时执行5个请求。

其他 2022/1/1 18:31:15 有383人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶