Главная » ЭКСПЕР » Error http 429 too many requests

Error http 429 too many requests

Что такое код ответа HTTP

Когда посетитель переходит по ссылке на сайт или вбивает её в поисковую строку вручную, отправляется запрос на сервер. Сервер обрабатывает этот запрос и выдаёт ответ — трехзначный цифровой код HTTP от 100 до 510. По коду ответа можно понять реакцию сервера на запрос. 

Первая цифра в ответе обозначает класс состояния, другие две — причину, по которой мог появиться такой ответ.

Common Scenario: APIs

On a much different side of the same coin, you may be running into error 429 while developing some piece of custom code, script or software that consumes an Application Programming Interface, or API. If that previous sentence sounded Greek to you – then this probably doesn’t apply. If, however, your brand new Twitter bot is asking Twitter’s API too often for the same information you may very well be hit with a 429 response code and no data. The horror!

The solutions? There are many ways that different common APIs deal with rate limiting. Let’s examine a few:

  1. User-level access to make individual requests. For the bigger and more popular social APIs like Facebook or Twitter, you’ll find that they will be far quicker to rate limit your App if the App itself is making the same call to the same resource too many times too quickly. However, if you instead build your App to consume user-level access (meaning, in plain English, that YOUR users login to YOUR app using THEIR Twitter/Facebook/whatever credentials via OAuth) then your individual users, while making calls to the API, will be far less likely to be rate limited.
  2. Make fewer requests. This sounds obvious – but most APIs are properly documented and will tell you exactly what API calls are rate limited by how many requests per however long of a period. If you read the documentation, and make changes to your code/script/App to ensure it absolutely never makes more than X many calls every Y seconds/minutes/hours/whatever – then you’ve properly solved your 429 error woes with that particular API.
  3. Contact the API vendor and ask them for an increase in your limited rate, or for them to lift the rate limiting restriction in your case. This might sound impossible – but if you describe the purpose of your code/script/App, the person/people/company who created the API might be willing (or willing for a fee, or a fee higher than your current plan…you’ve been warned) to consider lifting or increasing your rate limit.

Как проверить код состояния страницы

Проверить коды ответа сервера можно вручную с помощью браузера и в панелях веб‑мастеров: Яндекс.Вебмастер и Google Search Console.

В браузере

Для примера возьмём Google Chrome.

  1. Откройте панель разработчика в браузере клавишей F12, комбинацией клавиш Ctrl + Shift + I или в меню браузера → «Дополнительные инструменты» → «Инструменты разработчика». Подробнее об этом рассказывали в статье «Как открыть исходный код страницы». 

  2. Переключитесь на вкладку «Сеть» в Инструментах разработчика и обновите страницу: 

Как посмотреть код ответа сервера в инструментах разработчика в браузере
Как посмотреть код ответа сервера в инструментах разработчика в браузере

В Яндекс.Вебмастере

Откройте инструмент «Проверка ответа сервера» в Вебмастере. Введите URL в специальное поле и нажмите кнопку «Проверить»:

Как посмотреть код состояния в Вебмастере
Как посмотреть код состояния в Вебмастере

Как добавить сайт в Яндекс.Вебмастер и другие сервисы Яндекса

В Google Search Console

Чтобы посмотреть код ответа сервера в GSC, перейдите в инструмент проверки URL — он находится в самом верху панели:

Проверка URL в инструменте GSC
Проверка URL в инструменте GSC

Введите ссылку на страницу, которую хотите проверить, и нажмите Enter. В результатах проверки нажмите на «Изучить просканированную страницу» в блоке «URL есть в индексе Google».

Изучить просканированную страницу в GSC
Изучить просканированную страницу в GSC

А затем в открывшемся окне перейдите на вкладку «Подробнее»:

HTTP код страницы в GSC
HTTP код страницы в GSC

Теперь расскажем подробнее про все классы кодов состояния HTTP.

Как исправить ошибку HTTP 429

  1. Подождите, чтобы отправить еще один запрос.
  2. Реализуйте экспоненциальную отсрочку.
  3. Установите свой собственный предел дросселирования.
  4. Свяжитесь с вашим хостинг-провайдером.

Большинство приведенных ниже шагов направлены на предотвращение, а не на исправление ошибки HTTP 429 задним числом. Взглянуть.

1 Дождитесь отправки другого запроса.

Самый простой способ исправить ошибку HTTP 429 – дождаться отправки другого запроса. Часто этот код состояния отправляется с заголовком «Retry-after», который указывает период времени ожидания перед отправкой другого запроса. Он может указывать всего несколько секунд или минут.

Вот пример, который просит клиента подождать час перед отправкой другого запроса.

HTTP/1.1 429 Too Many Requests
Content-Type: text/html
Retry-After: 3600

 
   Too Many Requests
 
 
   

Too Many Requests

   

Only 100 requests per hour per logged in user is allowed on this website. Try again soon.

 

2 Реализуйте экспоненциальный откат.

Если заголовок «Retry-after» не отправляется, и вы не знаете, сколько времени ждать перед попыткой, вам следует реализовать повторные попытки с экспоненциальным откатом. Используя этот подход, ваше приложение не будет немедленно повторять неудавшийся запрос; вместо этого он выполнит серию повторных попыток с постепенно увеличивающимся временем ожидания между каждой попыткой. Когда запрос будет окончательно принят, вы узнаете, какое время или скорость ожидания приемлемы.

Вы можете добавить код для реализации этого подхода или использовать такой инструмент, как Celery, который имеет встроенную функцию экспоненциальной задержки.

Источник изображения

3 Установите свой собственный предел дросселирования.

Регулирование – это процесс ограничения количества запросов, которые приложение может отправить за определенный промежуток времени. Если этот предел превышен, запросы к серверу или API обычно отбрасываются или выполняются с кэшированными данными.

Хотя этот подход чаще всего используется сторонними API или платформами для предотвращения превышения клиентскими приложениями своих ограничений, он также может быть полезен для ограничения вашего собственного потребления сторонних API или ресурсов сервера. Фактически, вы можете установить более строгий лимит регулирования для себя, чтобы предотвратить выход за пределы сервера, API или другой службы, которую вы используете. Это особенно хорошая идея, если вы используете дорогостоящий API, например Twitter API, и не хотите выходить за рамки своей политики использования.

4 Свяжитесь с вашим хостинг-провайдером.

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

Если вы попробовали описанные выше действия и по-прежнему видите ошибку 429, возможно, причина возникла на вашем сервере, а не на вашем веб-сайте. Также возможно, что ваш хост блокирует запросы от определенных сторонних сервисов или платформ, таких как Google Search Console, которая делает множество запросов к веб-сайтам. Обратившись к вашему провайдеру, он может решить проблему или предоставить ценную информацию.

Common Scenario: Apache-Based Sites

Rate limiting of any kind is not natively supported by Apache. While Apache does have static server settings allowing you to control the maximum number of connections (and while, also, your supporting database will have like settings) none of these settings actually – by default – show a 429 error message. These are defined by any number of possible modifications to Apache, so we will review the possibly misbehaving mods now.

ALSO READ:  6 Fixes For The «ssl_error_rx_record_too_long» Error

If you’re an Apache web server administrator (or have root access to your Apache server, no other resource more technical than yourself and you need to fix this pronto), then the culprit that’s giving out 429 error messages for rate limiting is likely one of:

  • mod_evasive (which is designed to help you against DDoS attacks)
  • mod_cband (which is designed for more ‘normal’ wear-and-tear types of bandwidth control – ie. larger sites that need to worry about such things)

or, far less likely to be one of:

  • mod_limitipconn
  • mod_bw
  • mod_bwshare
  • mod_qos

If you’re looking to fix your server from showing the rate limiting error message 429, you need to start your look at the configurations for the above Apache modules (whichever one you have installed).

Pro Tip: Depending on your operating system that your web server is installed on, you can see a list of Apache’s enabled modules by running one of:

apache2ctl -M
apache2ctl modules
a2query -m
httpd -M
ls /etc/apache2/mods-enabled/ (especially handy if you don’t have root access on a shared host)

If none of these work – Google is your friend for your specific situation.

Pro Tip #2: Google is always your friend. Don’t panic.

1* класс кодов (информационные сообщения)

Это системный класс кодов, который только информирует о процессе передачи запроса. Такие ответы не являются ошибкой, хотя и могут отображаться в браузере как Error Code.

100 Continue

Этот ответ сообщает, что полученные сведения о запросе устраивают сервер и клиент может продолжать отправлять данные. Такой ответ может требоваться клиенту, если на сервер отправляется большой объём данных.

101 Switching Protocols

Сервер одобрил переключение типа протокола, которое запросил пользователь, и в настоящий момент выполняет действие.

Источники

  • https://journal.topvisor.com/ru/marketing/list-of-http-status-codes/
  • https://errorcodespro.com/fix-runtime-error-429-too-many-requests/
  • https://themewp.inform.click/chto-oznachaet-oshibka-http-429-i-kak-ee-ispravit/
[свернуть]
Решите Вашу проблему!


×
Adblock
detector