Ошибка 529 и «сервер занят»: что значит перегрузка и что делать
Ошибка 529 и сообщение «сервер занят, попробуйте позже» означают перегрузку на стороне провайдера: ваши запросы корректны, но мощности не хватает. Это не лимит вашего аккаунта. Помогает пауза с повтором, переход на другую модель или лине��ку, а в продакшене помогает заранее выстроенный запасной маршрут.
Содержание
Что происходит
Сообщение «сервер занят» знакомо всем, кто пользовался чатом DeepSeek или Claude в часы пик. В API та же ситуация приходит как ответ 529 или 503 с типом upstream_unavailable. Смысл один: запрос дошёл, но у провайдера не хватило свободных мощностей.
Это не ваш лимит: ключ в порядке, баланс на месте, параметры корректны. Проблема на стороне поставщика, и вы влияете на неё только выбором модели и временем запроса.
Чем 529 отличается от 429
Разница принципиальная. 429 означает, что вы превысили разрешённый темп: лечится паузой и снижением нагрузки. 529 означает, что перегружен сам сервис: снижать нагрузку бессмысленно, потому что рядом стоят такие же клиенты.
Отсюда разные тактики. При 429 помогает подождать минуту. При 529 минута может не помочь: перегрузка длится часами, и ждать бессмысленно.
Почему возникает перегрузка
Причин обычно три. Первая: выход новой модели, на которую все бросились одновременно. Вторая: пиковые часы в регионе, где живут пользователи сервиса. Третья: технические работы или деградация кластера у провайдера.
Отдельно стоит эффект «умной» модели: если флагман популярен, запросы к нему стоят в очереди, а его компактная версия в это же время отвечает свободно.
Что делать в коде
Правильная схема состоит из двух уровней. Первый: две-три попытки с паузой. Второй: переход на запасную модель, если пауза не помогла. Запасная модель должна быть из другой линейки, иначе она упадёт вместе с основной.
from openai import OpenAI
client = OpenAI(
api_key=os.environ["LLM_MART_API_KEY"],
base_url="https://llmmart.ru/api/v1",
)
PRIMARY = "anthropic/claude-sonnet-5.5"
FALLBACK = "z-ai/glm-5.3"
def ask(messages):
for model in (PRIMARY, FALLBACK):
try:
return client.chat.completions.create(model=model, messages=messages)
except Exception as err:
if "529" not in str(err) and "503" not in str(err):
raise
raise RuntimeError("обе модели недоступны")Повтор
Две попытки с паузой в несколько секунд: короткие перегрузки обычно проходят.
Запасная модель
Переключитесь на модель другой линейки: она переживает пик спокойнее.
Сообщение
Если оба варианта недоступны, покажите понятный текст вместо технической ошибки.
Метрики
Считайте долю отказов по моделям: станет видно, в какие часы нужен запас.
Как выбрать запасную модель
Запасная модель должна решать задачу хотя бы приемлемо и быть из другого семейства. Если основная это Claude, запасной разумно взять GLM, Qwen или GPT. Модели одного вендора часто деградируют одновременно, поэтому запас внутри линейки помогает реже.
Второе: запасная модель должна быть доступна на том же ключе. В каталоге LLM Mart это выполняется автоматически: один ключ и один адрес работают для всех линеек.
Что делать пользователю чата
Если вы просто пользуетесь чатом и видите «сервер занят», вариантов немного: подождать или сменить модель. Внутри одного сервиса переключение на компактную версию помогает чаще, чем ожидание.
Если перегрузки повторяются в рабочие часы, стоит завести второй маршрут через API: там можно выбрать модель, к которой в этот момент нет очереди. Инструкции по вызову есть в документации, коды ошибок разобраны в справочнике.
Частые вопросы
Что значит ошибка 529?
Это перегрузка на стороне провайдера: сервис не успевает обрабатывать запросы. Ваш ключ, баланс и параметры при этом в порядке. В каталоге LLM Mart похожая ситуация может прийти как 503 с типом upstream_unavailable. Лечится паузой, а при длительной перегрузке переходом на модель другой линейки.
Чем 529 отличается от 429?
429 означает, что вы превысили свой лимит частоты или бюджета, и помогает пауза или изменение правил. 529 означает, что перегружен сам сервис у провайдера, и ваш темп тут ни при чём. Поэтому при 429 достаточно подождать, а при 529 часто нужен другой маршрут из каталога LLM Mart: перегрузка может длиться часами.
Почему «сервер занят» появляется именно в DeepSeek?
Модели DeepSeek популярны, и в пиковые часы очередь к ним растёт. Через каталог LLM Mart можно переключиться на другую линейку, например GLM, Qwen или Claude, и продолжить работу тем же ключом. Это надёжнее, чем ждать освобождения очереди у одного провайдера.
Сколько раз повторять запрос при перегрузке?
Две-три попытки с паузой в несколько секунд, не больше. Дальше повторять бессмысленно: перегрузка не зависит от вашего упорства, а время пользователя тратится. В продакшене правильнее сразу предусмотреть запасную модель из другого семейства в каталоге LLM Mart и переключаться на неё, показывая пользователю понятное сообщение.
Можно ли избежать перегрузок заранее?
Полностью нет, но можно снизить риск: распределять нагрузку по двум моделям, не ставить всё на один популярный флагман и считать долю отказов по часам. В каталоге LLM Mart доступны модели разных вендоров на одном ключе, поэтому запасной маршрут настраивается без второго аккаунта и второй оплаты.
Комментарии 0