Исправление ошибок 429 для компонента пользовательской темы

Что вы хотите сделать?
У нас есть кастомный компонент темы (“Bio Book”), который недавно начал возвращать ошибки 429. Это началось 26 ноября. До этого всё работало.

Bio Book взламывает маршрут /u, чтобы отображать информацию о пользователях более красиво. Для этого он также запрашивал дополнительную информацию о каждом пользователе из его .json-файла. Bio Book использовал ленивую загрузку, чтобы избежать ошибок 429, но четыре дня назад это перестало работать — я не уверен, что произошло четыре дня назад, но команда Discourse подтвердила, что изменений в лимитах запросов не было.

Репозиторий с кодом находится здесь: GitHub - sethgodin/discourse_biobook: Bio Book feature for Discourse

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

Мы не хотим никаких новых функций, нам не нужно изменять существующие функции, и мы не хотим ничего рефакторить. Мы просто хотим устранить ошибки 429 и вернуть Bio Book к его предыдущей функциональности.

Когда это нужно сделать?
Мы хотели бы завершить работу к понедельнику, 6 января 2020 года.

Каков ваш бюджет в долларах США, который вы можете предложить за эту задачу?
Наш бюджет составляет 250 долларов США за устранение ошибок 429.

Мы понимаем, что устранение ошибок 429 исправит все основные проблемы. Если это не так, пожалуйста, сообщите нам, и мы скорректируем наш бюджет соответствующим образом.

1 лайк

Как вы установили Discourse?

Правильно ли регистрируются IP-адреса пользователей?

1 лайк

Мы размещены на платформе Discourse в рамках бизнес-плана.

Я так полагаю, но не уверен. Как это проверить?

1 лайк

Таким образом, ленивая загрузка происходит группами по 50 пользователей, а значение по умолчанию для max_reqs_per_ip_per_10_seconds также установлено на 50. Включая главную страницу, этот код выполнит как минимум 51 запрос (за менее чем 10 секунд), что превышает лимит запросов.

Иными словами: я не понимаю, как это могло работать раньше…?

3 лайка

Значит, всё работает правильно. Жаль. Исправить проблему с конфигурацией было бы гораздо проще, чем то, что описывает Ричард.

Я тоже не уверен, как это произошло, но всё работало правильно более года. До 4 дней назад мы никогда не сталкивались с ошибкой 429.

На прошлой неделе мы включили ограничение скорости запросов глобально для всех экземпляров Discourse. На следующей неделе мы сможем изучить плагин и посмотреть, есть ли разумный вариант использования пакетного API (batch API) вместо этого.

6 лайков

Ого, я недавно столкнулся с той же проблемой по очень похожей причине (получение информации о пользователях для отображения карточек!), реализовал небольшой хак, чтобы временно исправить это, и пришёл на форум буквально чтобы узнать, есть ли какой-то batch API, о котором я не знал… или чтобы узнать, как реализовать такой маршрут.

1 лайк

@sam Ах… это очень полезно знать. Большое спасибо за контекст!

1 лайк

Извини, Алекс, я в прошлую неделю ошибся в ответе. Я не понял, что мы не разворачивали это изменение уже давно.

4 лайка

Всё отлично, @HAWK, спасибо, что сказали.

Я пока воздержусь от действий по этому проекту, пока не получу ответ от @sam и команды о том, есть ли у нас разумный вариант использования batch API.

Спасибо всем.

1 лайк

Привет, Алекс,

Я только что посмотрел на компонент темы. Действительно, это влечёт за собой огромный объём работы и множество требований. Ограничение скорости запросов, которое мы внедрили, здесь абсолютно верно работает как иммунная система.

Мы займёмся решением этой проблемы, но на это может уйти одна-две недели.

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

Мы будем держать вас в курсе по мере продвижения. Касательно бюджета: мы сделаем эту работу бесплатно, но, по моим оценкам, на исправление уйдёт около двух дней, что значительно превышает первоначальный бюджет. На поверхности задача кажется простой, но требует очень сложных внутренних изменений.

8 лайков

Спасибо @sam и команде, это невероятно полезно. Основные изменения в API обязательно помогут нам и, я думаю, другим пользователям Discourse. Я рад, что мы сможем использовать Bio Book и сделать его работу более логичной. Срок в неделю или две нас устраивает.

Я понимаю вас насчёт первоначального бюджета и масштаба исправления. Это невероятно щедро с вашей стороны сделать это бесплатно. Спасибо.

Мы ждём дальнейших новостей.

4 лайка

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.