Skip to content
github-actions[bot] edited this page Oct 14, 2026 · 1 revision

Ограничения, ожидания и фоновые задания

Эта страница нужна, когда команда ждёт, останавливается с ошибкой о слишком частых запросах или когда вы собираетесь скачать много истории или запустить несколько команд сразу. Она объясняет, как часто max обращается к MAX, почему иногда ждёт и что делать, когда он остановился. Прочитав её, вы будете знать, какое ожидание нормально, как поменять темп и когда пробовать снова.

Слова, которые встречаются на странице:

  • Темп — сколько запросов в минуту профиль может отправить в MAX. max держит каждый профиль в этих пределах.
  • Отказ MAX — ответ «слишком много запросов». MAX свои пределы не публикует, а частые входы подряд блокирует на время.
  • Фоновое задание — скачивание, которое продолжается после того, как запустившая его команда завершилась.

max останавливается на отказе MAX и не повторяет запрос сам.

Темп: один на профиль

Каждый запрос, который max делает от имени профиля, — из команды, max personal mcp, max personal serve или фонового задания — ждёт своей очереди в одном темпе этого профиля:

  • первые 10 запросов идут сразу, поэтому обычные команды не ждут;
  • дальше — 20 запросов в минуту, один примерно раз в 3 секунды, пока запас не восстановится.

Две команды одновременно делят один темп. Очередь хранится в файле в папке состояния (pace/<профиль>.json), поэтому два терминала, несколько messages sync --background и max personal serve встают друг за другом, а не идут каждый на полной скорости. Пять скачиваний параллельно идут не быстрее, чем по очереди, — и не рискованнее. У разных профилей (разных аккаунтов MAX) темп свой.

Команда, которой ждать своей очереди дольше 5 секунд, пишет об этом в stderr:

waiting 12 s to keep this profile's pace with MAX

Поменять темп можно в файле настроек или для одного окружения переменной:

{ "defaults": { "requestsPerMinute": 10 } }
MAX_REQUESTS_PER_MINUTE=10 max personal messages sync Друзья

0 выключает темп. Делайте это только для профиля, которым не жалко рискнуть.

Когда MAX отказывает

  • «Слишком много запросов». Команда останавливается с кодом 8 (rate_limited). Из ответа MAX max не знает, сколько ждать, поэтому сам не ждёт и не повторяет запрос. messages sync сохраняет уже скачанное, и следующий запуск продолжает с того же места. Подождите несколько минут.
  • Слишком частые входы. MAX отказывает во входе, и max сам не входит до конца паузы — ни одна команда, ни max personal session start, ни фоновый сервер. Пауза растёт с каждым отказом подряд: 1 минута, 5 минут, 30 минут, час, 6 часов, дальше сутки; удачный вход её сбрасывает. Подробно — в решении проблем.
  • Если MAX всё же назовёт время ожидания, это ожидание держит весь профиль: следующий запрос любого процесса ждёт его конца, а тот, кому ждать больше 5 минут, сразу получает код 8, ничего не отправив. max personal doctor показывает удерживаемое в разделе flood; max personal flood clear снимает раньше срока, если вы знаете, что ограничение снято.

Отправка

  • 30 отправок в час на профиль по умолчанию (sendsPerHour), во всех процессах вместе; сверх — отказ с кодом 8. См. защиту от отправки не туда.
  • Отправку, которая могла дойти, а могла и нет, max не повторяет сам: повтор с тем же --send-id MAX узнаёт и второго сообщения не создаёт.

Скачивание истории

  • messages sync листает по 30 сообщений, с паузой 5–10 секунд между страницами (--pause), не больше 1200 сообщений за запуск (--limit). Подробно — в руководстве по архиву.
  • messages download --all делает запрос на каждую страницу и каждый файл; файлы тоже идут в темпе.
  • Списки участников и ремонт пропусков в архиве идут в том же темпе.

Фоновые задания

messages sync --background и store gaps repair --background запускают задание, которое переживает команду: по одному заданию на чат, каждое в своём процессе, все — в одном темпе профиля. max personal store jobs list показывает их, max personal store jobs cancel <id> останавливает после текущей страницы.

Боты

У бота свои ограничения Bot API, отдельные от аккаунта. На ответ 429 с retry-after чтение повторяется один раз после паузы, которую просит MAX; отправка не повторяется. См. боты.

Один вход на всё

max personal serve держит одно соединение с MAX, и команды, max personal mcp и max personal watch идут через него, а не входят каждый сам. Поэтому параллельные команды не добавляют входов. Если сервер не работает, команда запускает его в фоне (настройка serve). После разрыва сервер подключается снова с растущей паузой — от секунды до минуты.

Clone this wiki locally