Python requests 库 限制请求速率

2022-12-08 18:27:52 +08:00
 monetto

如题,项目中使用了 Python 的 requests 库,但是在某些场景下(例如 低带宽模式,有两个并行的 requests http 请求,一个很重要,一个优先级低一些),需要对,多个 requests 请求中的一个进行限速处理 ...

V 友 有什么比较好的思路吗~

2828 次点击
所在节点    Python
5 条回复
itskingname
2022-12-08 18:47:31 +08:00
requests 本身没有这个功能,但是你可以使用 walus 配合 Redis 实现。代码非常简单,就 3 行: https://walrus.readthedocs.io/en/latest/rate-limit.html
monetto
2022-12-08 18:57:31 +08:00
@itskingname 感谢,等有时间研究一下这个东西的实现思路是啥~

目前我还能想到一种方案是 requests 利用多进程去做,然后通过 Linux 的一些网络工具去限制这个进程~
edis0n0
2022-12-08 19:11:10 +08:00
@itskingname #1 有相同的需求,因为我的爬虫需要同时发几万个请求所以用的是效率更高的 aiohttp ,经常把服务器带宽跑满了,导致大量请求超时,想要实现根据服务器带宽和请求内容大小自动调整请求频率,也可以这么做吗
itskingname
2022-12-08 20:14:59 +08:00
@edis0n0 两个方案,使用 walus 是最简单的方案,只要 3 行代码。也有第二个方法,使用 asyncio 自带的 Semaphore
levenwindy
2022-12-10 18:46:08 +08:00
@itskingname
我是纯 shell curl/wget 测速 能否实现一直跑满带宽?

之前写了个测速脚本, 控制并发,但是每次都说一开始能跑满,慢慢就越来越低了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/901154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX