Как я могу использовать RateLimiter Laravel, чтобы не превышать 5000 вызовов за 10 минут ⇐ Php
Как я могу использовать RateLimiter Laravel, чтобы не превышать 5000 вызовов за 10 минут
API, с которым я работаю, ограничивает нас 5000 вызовами каждые 10 минут. Он настроен для запуска с помощью консольной команды.
Есть ли способ заставить Laravel RateLimiter добиться этой цели?
Код на данный момент:
$five_thousand_one_hundred_records = User::limit(5100)->get(); foreach($five_thousand_one_hundred_records as $record){ /* * RateLimiter::attempt(string $key, int $maxAttempts, Closure $callback, int $decaySeconds = 60) * $decaySeconds — это время, в течение которого программа должна ждать, прежде чем она сможет снова выполниться. */ $executed = RateLimiter::attempt( 'call_to_john_api', $perMinute = 5000, function() use ($record) { // Хорошо, вызываем API $this->APICall($record); }, 60 ); если (! $выполнено) { // Как долго мы сможем снова вызвать API? $секунды = Ограничитель скорости::availableIn('call_to_john_api'); /* * Вы можете повторить попытку через 60 секунд. * Мне нужно это, чтобы выполнить указанную выше команду после сна, чтобы гарантировать, что вызов API произойдет. * спит x секунд. Слишком много вызовов API */ сон ($ секунд); // после сна можно вызвать APICall() $this->APICall($record); } }
Код работает, но разрешает 5000 вызовов каждую минуту. Мне нужно, чтобы количество звонков не превышало 5000 за 10 минут. Когда он приближается к этому порогу, ему нужно подождать примерно 60 секунд, чтобы API не кричал на него.
API, с которым я работаю, ограничивает нас 5000 вызовами каждые 10 минут. Он настроен для запуска с помощью консольной команды.
Есть ли способ заставить Laravel RateLimiter добиться этой цели?
Код на данный момент:
$five_thousand_one_hundred_records = User::limit(5100)->get(); foreach($five_thousand_one_hundred_records as $record){ /* * RateLimiter::attempt(string $key, int $maxAttempts, Closure $callback, int $decaySeconds = 60) * $decaySeconds — это время, в течение которого программа должна ждать, прежде чем она сможет снова выполниться. */ $executed = RateLimiter::attempt( 'call_to_john_api', $perMinute = 5000, function() use ($record) { // Хорошо, вызываем API $this->APICall($record); }, 60 ); если (! $выполнено) { // Как долго мы сможем снова вызвать API? $секунды = Ограничитель скорости::availableIn('call_to_john_api'); /* * Вы можете повторить попытку через 60 секунд. * Мне нужно это, чтобы выполнить указанную выше команду после сна, чтобы гарантировать, что вызов API произойдет. * спит x секунд. Слишком много вызовов API */ сон ($ секунд); // после сна можно вызвать APICall() $this->APICall($record); } }
Код работает, но разрешает 5000 вызовов каждую минуту. Мне нужно, чтобы количество звонков не превышало 5000 за 10 минут. Когда он приближается к этому порогу, ему нужно подождать примерно 60 секунд, чтобы API не кричал на него.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение