> ## Documentation Index
> Fetch the complete documentation index at: https://docs.laozhang.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 동시 요청은 몇 개까지 보낼 수 있나요? 429 대응

> 부하가 높을 때 429가 나오는 이유와 로컬 큐, 백오프로 요청 속도를 조절하는 방법, 대량 작업 전에 확인할 사항을 안내합니다.

LaoZhang API는 현재 텍스트, 이미지, 비디오 모델 모두 계정이나 토큰 단위로 동시 요청을 제한하거나 스로틀링하지 않으며, 변경 사항은 [공지사항](https://docs.laozhang.ai/en/changelog.md)에 게시합니다. 그래도 부하가 높으면 `429`가 올 수 있으니 코드에서 요청 속도를 조절하세요.

| 항목 | 내용 |
| - | - |
| `429`의 원인 | 업스트림 모델의 속도 또는 용량 제한 |
| 과금 | `429`를 포함해 업스트림이 200이 아닌 응답을 반환하면 과금하지 않음 |
| 대응 | 로컬 큐로 동시 요청 수를 제한하고 `429`에서는 백오프 |

## 429 처리하기

**1. 오류 본문 읽기**

`429`의 본문에는 속도 제한, 용량 부족, quota 문제 중 무엇인지 나와 있습니다. 본문에 `insufficient_user_quota`가 있으면 잔액이 사전 승인 금액을 감당하지 못하는 것이므로 [잔액이 남았는데 실패하는 이유](https://docs.laozhang.ai/ko/faq/balance-insufficient.md)를 참고하세요. 재시도해도 소용없습니다.

**2. 백오프 후 재시도**

재시도할 때마다 대기 시간을 늘리세요. 예를 들어 1, 2, 4, 8초로 늘리고, 약간의 무작위 지터를 더하고, 시도 횟수에 상한을 두세요. `429`가 오자마자 같은 요청을 다시 보내지 마세요.

**3. 동시 요청 줄이기**

로컬 큐나 세마포어로 동시에 진행 중인 요청 수를 제한하세요. `429`가 계속되면 동시 요청 수를 절반으로 줄였다가 천천히 다시 늘립니다.

## 세마포어로 동시 요청 제한하기

이 Python 예제는 동시에 진행되는 요청을 최대 10개로 유지하고, `429`는 지수 백오프로 재시도합니다.

```python theme={null}
import asyncio
import os
import random
from openai import AsyncOpenAI, RateLimitError

client = AsyncOpenAI(
    api_key=os.environ["LAOZHANG_API_KEY"],
    base_url="https://api.laozhang.ai/v1",
    max_retries=0,
)
limit = asyncio.Semaphore(10)  # 동시에 진행 중인 요청 수


async def ask(prompt, attempts=5):
    async with limit:
        for attempt in range(attempts):
            try:
                response = await client.chat.completions.create(
                    model="gpt-5.4-mini",
                    messages=[{"role": "user", "content": prompt}],
                )
                return response.choices[0].message.content
            except RateLimitError:
                if attempt == attempts - 1:
                    raise
                await asyncio.sleep(2 ** attempt + random.random())


async def main():
    prompts = [f"숫자 {i}을(를) 한 문장으로 설명해 주세요" for i in range(50)]
    results = await asyncio.gather(*(ask(p) for p in prompts))
    print(results[:3])


asyncio.run(main())
```

먼저 `pip install openai`로 SDK를 설치하고 `LAOZHANG_API_KEY`를 설정하세요. 이미지와 추론 요청은 더 오래 걸리므로 동시 요청 수를 더 낮추고, 타임아웃은 [요청 타임아웃](https://docs.laozhang.ai/ko/faq/request-timeout.md)을 참고해 설정하세요.

## 대량 작업 전에 확인할 것

* 먼저 소량으로 실행해 [호출 로그](https://api.laozhang.ai/log)에서 소요 시간, 성공률, 청구액을 확인하세요.
* 비디오 모델은 비동기 작업으로 동작합니다. 최대한 빠르게가 아니라 각 비디오 모델 가이드가 권장하는 간격으로 폴링하세요.
* 요청을 대량으로 한꺼번에 보낼 계획이라면 업스트림 용량을 미리 확인할 수 있도록 모델, 예상 물량, 시점을 [hi@laozhang.ai](mailto:hi@laozhang.ai)로 알려 주세요.

## 자주 묻는 질문

### 토큰이 많으면 동시 요청도 늘어나나요?

아니요. 플랫폼은 토큰 단위로 동시 요청을 제한하지 않으므로 트래픽을 여러 토큰으로 나눠도 한도가 올라가지 않습니다. 서비스나 환경별로 토큰을 나누는 것은 관리와 보안을 위한 것입니다. [API 키 생성, 보관, 교체, 폐기](https://docs.laozhang.ai/en/faq/token-management.md)를 참고하세요.

### 제한이 없다면 왜 요청이 느려지나요?

피크 시간에는 업스트림 모델이 요청을 대기열에 쌓아 요청마다 시간이 더 걸리고, 동시 요청이 많을수록 한꺼번에 대기하는 요청도 늘어납니다. 요청이 느리면 먼저 타임아웃이 충분히 긴지 확인한 다음 동시 요청 수를 낮춰 보세요.

## 관련 문서

* [요청 타임아웃](https://docs.laozhang.ai/ko/faq/request-timeout.md)
* [잔액이 남았는데 실패하는 이유](https://docs.laozhang.ai/ko/faq/balance-insufficient.md)
* [모델 이용 가능 여부 확인](https://docs.laozhang.ai/en/faq/model-availability.md)
* [API 연동 가이드](https://docs.laozhang.ai/ko/api-manual.md): 오류 처리


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.