如何实现 Laravel Redis 限速

Mea*_*jay 3 queue throttling redis laravel

尝试为队列实现速率限制以每秒运行一项作业,该作业向外部 API 发出 HTTP 请求并加载一种类型的数据。

但不知道如何称呼这份工作,尝试了不同的选择但没有奏效。在示例中:

Redis::throttle('key')->allow(10)->every(60)->then(function () {
    // Job logic...
}, function () {
    // Could not obtain lock...
    return $this->release(10);
});
Run Code Online (Sandbox Code Playgroud)

将在// Job logic...调度队列中放入什么并且此代码将在队列类中?以及如何命名key?我的队列名称是loader.

有什么帮助吗?

Lar*_*leg 6

把它放在Job 的handle 方法中。

public function handle() {
    Redis::throttle('key')->allow(10)->every(60)->then(function () {
        // Job logic...
    }, function () {
        // Could not obtain lock...
        return $this->release(10);
    });
}
Run Code Online (Sandbox Code Playgroud)

键应该是任何唯一的字符串。它将识别限制:“allow(10)->every(60)”。

  • @andrux 它将作业放回队列以在 10 秒内处理 (2认同)