---
title: "타임아웃, 속도 제한 및 재시도"
description: "SDK 타임아웃과 제한된 재시도를 구성하고, 재시도 가능한 오류와 구성 오류를 구분하여 중복 제출을 방지합니다."
headingIds: {"재시도해야 하는 상황":"section-1","먼저 SDK 내장 재시도 사용":"section-2","직접 재시도를 구현할 때":"section-3","충분한 디버깅 정보 기록":"section-4"}
---

<aside className="docs-publication" data-pagefind-ignore>

[1ZheAI](https://1zheai.com/en/editorial/#publisher)가 관리하는 문서입니다. [출처 및 수정 사항](https://1zheai.com/en/editorial/).

오류를 발견하셨나요? 페이지 주소와 설명을 첨부하여 [고객 지원](mailto:support@1zheai.com)으로 문의해 주세요. API 키나 계정 정보는 보내지 마세요.

</aside>
구성 오류를 먼저 수정한 다음 일시적인 장애를 처리합니다. 재시도 횟수, 동시성 및 총 대기 시간을 함께 제한하여 짧은 시간 내에 동일한 실패 요청을 여러 번 반복해서 보내지 않도록 합니다.

## 재시도해야 하는 상황

| 상황 | 권장 사항 |
| --- | --- |
| 400 / 401 / 403 / 404 | 요청, 권한 또는 모델을 먼저 수정합니다. 원본 요청을 자동으로 반복하지 않습니다. |
| 429 | 응답 메시지를 확인합니다. `Retry-After`이 있는 경우 대기 시간을 따르고 동시성을 낮춥니다. |
| 500 / 502 / 503 / 504 / 529 | 제한된 재시도가 가능합니다. 지속적으로 실패하면 중단하고 요청 ID를 보고합니다. |
| 연결 실패 | DNS, 프록시 및 네트워크를 확인하고 작업이 허용하는 시간 내에서 제한된 재시도를 합니다. |
| 요청 전송 후 타임아웃 또는 연결 끊김 | 결과가 불확실할 수 있으므로 로그를 먼저 확인합니다. 업스트림이 아직 처리하지 않았다고 가정할 수 없습니다. |

클라이언트 라이브러리의 재시도 범위가 위 표와 정확히 같지 않을 수 있습니다. 어느 계층에서 재시도할지 결정하면 해당 계층에서 명시적으로 정책을 설정합니다.

## 먼저 SDK 내장 재시도 사용

Python과 Node.js의 타임아웃 단위가 다릅니다. Python은 초, Node.js는 밀리초를 사용합니다. 다음 예제는 120초 타임아웃과 최대 2회 자동 재시도를 설정합니다. 초기 연결 시 문제를 해결할 때는 0으로 변경할 수 있습니다.

<CodeGroup>
```python title="Python"
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ONEZHE_API_KEY"],
    base_url="https://1zheai.com/v1",
    timeout=120.0,
    max_retries=2,
)
```
```javascript title="Node.js"
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ONEZHE_API_KEY,
  baseURL: "https://1zheai.com/v1",
  timeout: 120_000,
  maxRetries: 2,
});
```
</CodeGroup>

타임아웃 구성은 전체 비즈니스 작업의 총 소요 시간 상한이 아닙니다. 재시도와 대기로 총 소요 시간이 증가합니다. 외부에서 작업을 다시 실행하는 경우 별도의 총 마감 시간과 취소 메커니즘을 설정해야 합니다.

## 직접 재시도를 구현할 때

SDK 자동 재시도를 비활성화하여 중첩을 방지합니다. 점진적으로 증가하는 대기 간격과 무작위 지터를 사용합니다. 시도 횟수, 최대 대기 시간 및 동시성 큐를 명시적으로 제한합니다. `Retry-After`을(를) 파싱할 때 초 단위일 수도 있고 HTTP 날짜일 수도 있다는 점에 유의합니다.

부분적인 스트리밍 결과를 이미 사용자에게 표시한 경우 자동으로 처음부터 재생하여 기존 텍스트 뒤에 이어서는 안 됩니다. "미완료" 상태를 유지하고 사용자가 다시 생성하거나 계속할지 결정하게 합니다.

이미지 생성, 도구 실행 및 기타 외부 결과를 생성할 수 있는 작업은 중복 제출에 특히 주의해야 합니다. 임의의 요청 ID를 설정하면 서버가 자동으로 중복을 제거한다고 가정할 수 없습니다.

## 충분한 디버깅 정보 기록

시간, 엔드포인트, 모델, 상태 코드, 소요 시간, 시도 순서 및 서버가 반환한 요청 ID를 기록합니다. 인증 헤더와 전체 개인 프롬프트는 기록하지 않습니다. 이 정보를 [호출 로그](/ko/docs/usage-logs/)과 대조합니다.

SDK 구성은 [OpenAI Python SDK](https://github.com/openai/openai-python#retries) 및 [Node SDK](https://github.com/openai/openai-node#retries)을 참조합니다. 특정 오류는 [오류 코드 및 디버깅](/ko/docs/troubleshooting/)을 참조합니다.
