Перейти к содержимому
Last updated

API MoreLogin применяет ограничения скорости для обеспечения справедливого использования и стабильности системы.


Пределы

Тип APIОграничение скоростиОкно
Локальный API120 запросовв минуту
Открытый API120 запросовв минуту

Реакция ограничения скорости

Когда вы превышаете лимит скорости, API возвращает:

Состояние HTTP: 429 Too Many Requests

{
  "code": 429,
  "msg": "Rate limit exceeded",
  "data": null,
  "requestId": "..."
}

Лучшие практики

1. Реализация повторной попытки с отсрочкой

import time
import requests

def api_request_with_retry(url, payload, max_retries=3):
    for attempt in range(max_retries):
        response = requests.post(url, json=payload)
        if response.status_code == 429:
            wait_time = 2 ** attempt  # 1s, 2s, 4s
            print(f"Rate limited. Retrying in {wait_time}s...")
            time.sleep(wait_time)
            continue
        return response
    raise Exception("Max retries exceeded")

2. Пакетные операции

Вместо выполнения отдельных вызовов API используйте пакетные конечные точки, если они доступны:

# Bad: 100 individual calls
for env_id in env_ids:
    requests.post(f"{BASE}/api/env/start", json={"envId": env_id})

# Good: Use batch endpoints
requests.post(f"{BASE}/api/env/updateGroup/batch", json={
    "envIds": env_ids,
    "groupId": "target-group"
})

3. Кэшировать ответы

Для данных, которые не меняются часто (например, списки часовых поясов, списки платформ), кэшируйте ответ локально:

# Cache timezone/language data — it rarely changes
timezone_data = requests.post(f"{BASE}/api/env/advanced/timezone").json()
# Reuse timezone_data for subsequent profile creations

Мониторинг вашего использования

Следите за частотой вызовов API. Если вы последовательно приближаетесь к пределу, учтите:

  • Распределение запросов равномерно по минутам
  • Использование веб-перехватчиков (скоро) вместо опроса
  • Объединение нескольких операций в пакетные вызовы