思考并回答以下问题:
使用
可以使用时间或并发(Laravel-Funnel)来控制队列任务。该功能特性在队列任务与有频率限制的API交互时很有帮助。
通过throttle方法,你可以限定给定类型任务每60秒只运行10次。如果不能获取锁,需要将任务释放回队列以便可以再次执行:
1 | Redis::throttle('key')->allow(10)->every(60)->then(function () { |
注:在上面的例子中,key可以是任意可以唯一标识你想要限定访问频率的任务类型的字符串。举个例子,这个键可以基于任务类名和操作Eloquent模型的ID进行构建。
源码
Illuminate\Redis\Limiters\DurationLimiter.php
1 |
|
Illuminate\Redis\Limiters\DurationLimiterBuilder.php
1 |
|
Illuminate\Redis\Connections\Connection.php
1 |
|