Ошибка: вы выполнили это действие слишком много раз

Я довольно часто получаю следующую ошибку.

{"errors":["Вы выполнили это действие слишком много раз. Пожалуйста, подождите несколько секунд перед повторной попыткой."],"error_type":"rate_limit","extras":{"wait_seconds":0}}

Как мне устранить эту ошибку? Пожалуйста, дайте совет.

Зайдите в настройки > Лимиты запросов. Измените значения по своему усмотрению

Привет, @IAmGav,

Я установил следующие параметры:

  1. Ограничение частоты создания тем = 0 (после создания темы пользователи должны ждать (n) секунд перед созданием следующей темы).
  2. Ограничение частоты создания постов = 0 (после публикации поста пользователи должны ждать (n) секунд перед созданием следующего поста).
  3. Ограничение частоты создания тем новыми пользователями = 0 (после создания темы новые пользователи должны ждать (n) секунд перед созданием следующей темы).
  4. Ограничение частоты создания постов новыми пользователями = 0 (после публикации поста новые пользователи должны ждать (n) секунд перед созданием следующего поста).

Однако ошибка всё ещё сохраняется. Есть ли другие ограничения, которые мне следует проверить?

Я отключил все настройки, упомянутые в:

Но всё равно получаю ошибку «Вы выполнили это действие слишком много раз».
Нужно ли сделать что-то ещё?

Так что именно вы делаете, что вызывает эту ошибку?

Я пытаюсь создать темы через API. При попытке создать около 100 тем через API возникает эта ошибка.
Также я пытаюсь обновить теги для своих тем через API. На моем форуме сотни тем, у которых нет тегов, поэтому я обновляю их через API.

Итак, какие значения у

DISCOURSE_MAX_USER_API_REQS_PER_MINUTE
DISCOURSE_MAX_USER_API_REQS_PER_DAY
DISCOURSE_MAX_ADMIN_API_REQS_PER_KEY_PER_MINUTE

и вы точно уверены, что не превышаете эти лимиты?

Привет :wave:
У меня возникла та же проблема, но с операциями чтения.

Я создаю интеграцию с Discourse и использую API для чтения большого количества постов. Я не выполняю никаких операций записи, только чтение. Чтобы получить последние посты, я делаю следующее:

  1. Получаю последние темы через endpoint /latest.json
  2. Последовательно получаю все темы через /t/:id, чтобы получить поток постов и пройтись по ним с пагинацией
  3. Если в теме больше 20 постов, получаю их ID из “stream” и последовательно запрашиваю их порциями по 20 штук

Кроме того, я выполняю все запросы в очереди и стараюсь отправлять не более ~25 запросов за 10 секунд, но всё равно часто вижу ошибку “Вы выполнили это действие слишком много раз” для запросов на чтение темы или постов. Я зашёл в настройки Discourse, но не могу найти здесь никаких ограничений для чтения. Я вижу только ограничения для “Создания тем” и других операций записи.

Есть ли что-то, что я могу с этим сделать? Спасибо за любые советы и извините, что поднимаю старую тему.

Похоже, я достиг лимита max_admin_api_reqs_per_minute. Можно ли его настроить? В разделе Настройки > Лимиты скорости его не видно.

РЕДАКТИРОВАНИЕ: на самом деле срабатывают два лимита: admin_api_key_rate_limit и ip_10_secs_limit.

Меня интересует, поможет ли добавление ?print=true сократить количество вызовов API при чтении?

Это позволит получать 1000 сообщений за один вызов API.

О, по какой-то причине я думал, что ?print имеет ещё более строгие лимиты запросов.

Но, похоже, дело не в использовании ?print=true, а в чём-то другом. Обязательно попробую.Но, насколько я понимаю, это поможет только для тем, где больше 20 сообщений. Я считаю, что у большинства наших тем их меньше, поэтому реальным узким местом является слишком большое количество запросов для тем.

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

Ага, да, скорее всего именно так.

Помимо обработки ошибок 429 и замедления работы на указанное время, есть несколько вариантов.

Я бы начал с использования плагина Data Explorer для написания запроса, который получит все нужные вам темы. Насколько я знаю, он может вернуть до 1000 результатов. Затем вы можете использовать API для вызова этого запроса и получения ответа.

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

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

Проблема использования плагина «Исследователь данных» заключается в том, что мы не единственные пользователи интеграции с Discourse. Мы (fibery.io) позволяем нашим клиентам интегрировать их экземпляры Discourse, чтобы они могли беспрепятственно синхронизировать данные с нашим инструментом.

Вебхуки — это хорошее дополнение, но они не помогут при первой синхронизации (которая является самой ресурсоемкой, например, темы и сообщения за последний месяц). После этого мы выполняем плановую синхронизацию новых данных, и это не вызывает проблем.

Проверка кода 429 и повторная попытка работают нормально, хотя иногда могут быть медленными.

Спасибо, что уделили внимание этому вопросу :bow: