본문으로 건너뛰기
한국어

타임아웃, 속도 제한 및 재시도

SDK 타임아웃과 제한된 재시도를 구성하고, 재시도 가능한 오류와 구성 오류를 구분하여 중복 제출을 방지합니다.

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

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

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

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

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,
)

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

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

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

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

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

SDK 구성은 OpenAI Python SDK 및 Node SDK을 참조합니다. 특정 오류는 오류 코드 및 디버깅을 참조합니다.