Я пытаюсь реализовать Ограничение скорости работы с очередями Laravel 5.7 , которое можно использовать, когда задания очереди сталкиваются с внешним API, скорость которого ограничена.
Вот моя работа:
public function handle() {
echo 'about to check throttling'.PHP_EOL;
Redis::throttle('throttle-test')->allow(10)->every(5)->then(function () {
// this is never executed
echo 'doing work'.PHP_EOL;
}, function () {
// also never executed
echo 'released back onto queue'.PHP_EOL;
return $this->release(10);
});
}
Нет никаких упоминаний о необходимости использовать Redis для очередей, кэша или чего-либо подобного в документах, кроме "... приложение может взаимодействовать ссервер Redis. "В любом случае, вот мои варианты env:
DB_CONNECTION=mysql
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=redis
Я подтвердил, что RedisServiceProvider
получает правильную конфигурацию, которую он ожидает:
array:3 [
"client" => "predis"
"default" => array:4 [
"host" => "redis"
"password" => null
"port" => "6379"
"database" => 0
]
"horizon" => array:5 [
"host" => "redis"
"password" => null
"port" => "6379"
"database" => 0
"options" => array:1 [
"prefix" => "horizon:"
]
]
]
Я изо всех сил пытаюсь понять, почему естьнет ошибок времени выполнения, просто ничего не выполняется.Если я закомментирую дроссельную заслонку, работа будет работать нормально и делать то, что должен делать. Чего мне не хватает в требованиях для использования этого регулирования?