某 API 服务限制每个 IP 每秒最多 5 个请求
某 IP 服务器上有多个 Python 文件,这几个文件运行后都有可能去请求这个 API ,有时候每秒会超过 5 次。
大佬们,有什么好方法能从自己服务器上控制这个请求频率呢,要是一个 Py 文件还好说,关键多个 Py 文件。
谢谢。
1
coderxy 2022-10-14 21:38:31 +08:00 1
用 redis 或者数据库做计数,秒级限流
|
2
nulIptr 2022-10-14 21:41:18 +08:00
感觉这个需求很奇怪,八成是 xy 问题
不过实现也很容易,搞个本地的代理服务器来限流就行了啊。流量先打到你的代理,限流之后再发给真正的 api |
3
S1ngleton 2022-10-15 00:33:13 +08:00 via iPhone
起一个服务,发放令牌,每个 py 请求前先去获取,获取到则请求
|
4
tt7 2022-10-15 00:41:19 +08:00
|
5
zyxbcde 2022-10-15 18:22:45 +08:00 via iPhone
这题我会,我遇到过。
async with Lock: Asyncio.sleep(0.25) Session.get() 我本地起了一个后端自测请求确实是间隔 0.25 秒发过来的。不过还需要注意如果接口慢叠加最大连接数影响,还有网络延迟之类的。你一秒发出去 5 个请求,到服务器时候可能一秒 4 个也可能有 6 个... |