【发布时间】:2020-05-03 03:06:25
【问题描述】:
我在我的 laravel 应用程序中使用 Redis::throttle 来限制对各种 Web 服务的请求,但我们以亚马逊为例。
如果亚马逊文档说特定用户可以使用具有以下漏桶限制的特定端点:允许 40 个请求,在初始 40 个之后每半秒允许一个新请求。
然后我会让我的Redis::throttle 看起来像这样:
$key = 'Amazon|'.$requestType.'|'.$user->id;
Redis::throttle($key)->allow(40)->every(20)->then(function () {
// Job logic...
});
每 20 秒允许 40 个请求似乎是漏桶的定义方式。但这样对吗?
因为我想,替代方案就是我每秒允许 2 个请求
Redis::throttle($key)->allow(2)->every(1)
但这不允许爆发 40 次。
【问题讨论】:
标签: laravel throttling