Discourse API возвращает 429

Здравствуйте,

Я пытаюсь использовать API Discourse для отправки шуточных ответов на форуме. Например, если кто-то напишет «Linux» в теме, Discobot ответит: «Вы имеете в виду GNU/Linux?»

Это работает, пока кто-то не ответит той же фразой. После этого в течение двух минут (почти точно двух) я получаю множество ответов с кодом 429 или пустые ответы, после чего API снова начинает обрабатывать запросы в обычном режиме.

Например:

Linux
FOSS
dotnet
Java
Linux

В этом случае всё работает корректно. Однако:

Linux
FOSS
dotnet
Linux
Linux

В этом случае всё ломается.

Есть ли у кого-нибудь идеи, что означает этот двухминутный интервал? Мы пробовали изменять настройки app.yml и корректировать ограничения скорости API, но это не помогло.

Спасибо!

Нам нужна дополнительная информация. Какой API-эндпоинт вы вызываете и получаете ошибку 429?

https://forum.domain.net/t/1000/highestPost.json

GET-запрос к этому URL, где highestPost — это highest_post_number темы.

Это означает, что для вас установлено ограничение скорости запросов. Если вы хотите отслеживать новые посты, такой метод опроса (polling) крайне неэффективен. Могу я предложить использовать вебхуки? Таким образом вы сможете реагировать на новые посты, вместо того чтобы постоянно опрашивать сервер, даже когда ничего не происходит.

Конечно, я могу посмотреть веб-хуки.

Вы знаете, как отключить ограничения скорости ответов? Я думаю, что мы уже изменили несколько параметров в app.yml, касающихся API, по этой ссылке:

Нужно ли нам изучить что-то конкретное в Nginx?

По умолчанию добавляется шаблон nginx. Он будет одной из самых первых строк в app.yml. Возможно, вам стоит удалить строку, касающуюся ограничений скорости (rate limits), и пересобрать приложение, чтобы изменения вступили в силу.

Ура! Попробую. Спасибо за помощь!