170 похожих чатов

Всем привет! Дайте пару советов по отправке запросов к

удалённому API(мой склад), у них стоит ограничение на кол-во отправляемых запросов 45 за 3 секунды. Дело в том, что я получаю первым запросом товары, прохожусь по ним циклом и нахожу массив с изображениями, в этом массиве нет самих изображения, а только ссылка с API запросом на получение этих изображений. Приходится отправлять ещё запрос, через раз вылетает ошибка из за превышения ограничения. Есть идея заводить sleep на 4 секунды после 44 запроса, тупо?))

9 ответов

14 просмотров

самый тупой вариант - ловить в онлайне эксепшн на превышение ограничения и ретраить через какое-то время самый правильный вариант - использовать очереди и получать каждое изображение асинхронной джобой с опцией ретрая через какое-то количество времени

Зачем ретраить? Можно каждую отложить на секунду вперед, например.

затем, что втупую «отложить на секунду вперед» может выдать тебе ошибку в следующем запросе $response = Http::retry(3, 100)->post(...); сделает 3 попытки запроса с интервалом в 100мс каждая. Долой порнографию. И, да, наверняка вы этого не знаете, ведь этого фасада нет в вашей доисторической версии ларки)

Технический директор с воспитанием школьника. Ты можешь не ерничать, не? Во-первых, фасады говно. Во-вторых, есть миллион способов, как можно не допустить превышания лимита, и да, откладывая каждый запрос на секунду, ты обеспечишь их выравнивание по времени, вряд ли у тебя разом отправится 45 запросов. Можно от времени первого запроса, который получает записи, прибавлять.

> $response = Http::retry(3, 100)->post(...); сделает 3 попытки запроса с интервалом в 100мс каждая. Долой порнографию. Синхронно делать 3 запроса да еще с синхронным слипом, и ты меня учишь современной инфраструктуре, ага.

https://laravel-news.com/guzzle-advanced-throttling-middleware

просто отправляй 11 запросов в секунду, но опять же лучше используй какой-то механизм ретрайнинга, т.к. нет гарантий что запрос будет валидный

Vlad-Zorgan Автор вопроса

От души, то что надо

Лучше всего использовать джобы

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта