[파이썬] API 호출 프로그램을 위한 데코레이터 활용 가이드
- 재시도(Retry) 데코레이터
1
2
3
@retry_on_failure(max_retries=3, delay=1)
def api_call():
# API 호출 코드
- 용도: 일시적 네트워크 오류나 서버 문제 시 자동 재시도
- 적용 대상: 모든 외부 API 호출 함수
- 로깅(Logging) 데코레이터
1
2
3
@log_execution
def process_data():
# 처리 코드
- 용도: 함수 실행 시작/종료 시간, 성공/실패 여부 추적
- 적용 대상: 주요 프로세스 함수, API 호출 함수
- 캐싱(Caching) 데코레이터
1
2
3
@cache_result(timeout=300) # 5분 캐싱
def get_static_data():
# 자주 변경되지 않는 데이터 조회
- 용도: 동일 매개변수로 반복 호출 시 API 부하 감소
- 적용 대상: 자주 호출되지만 데이터가 자주 변경되지 않는 함수
- 속도 제한(Rate Limiting) 데코레이터
1
2
3
@rate_limit(calls=100, period=60) # 1분당 100회
def frequent_api_call():
# API 호출 코드
- 용도: API 제공자의 속도 제한 정책 준수
- 적용 대상: 대량으로 반복 호출되는 API 함수
- 오류 처리(Error Handling) 데코레이터
1
2
3
@handle_api_error
def risky_operation():
# 실패 가능성 있는 코드
- 용도: API별 오류 코드 처리 및 표준화
- 적용 대상: 다양한 예외가 발생할 수 있는 API 호출
데코레이터 적용 우선순위
1
2
3
4
5
6
@handle_api_error # 최외곽: 모든 예외 포착
@rate_limit(100, 60) # 속도 제한 확인
@retry_on_failure(3, 2) # 실패 시 재시도
@log_execution # 최내부: 항상 로깅
def api_function():
# 코드
성능 고려사항
- 데코레이터는 함수 호출마다 오버헤드 발생
- 로깅은 비동기 처리 고려
- 캐싱 데이터는 메모리 사용량 주의
잘 설계된 데코레이터는 코드 중복을 줄이고 핵심 비즈니스 로직과 인프라 관심사(로깅, 재시도, 오류 처리)를 분리하여 코드 품질을 향상시킵니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

