Skip to content

Latest commit

 

History

History
74 lines (56 loc) · 4.77 KB

File metadata and controls

74 lines (56 loc) · 4.77 KB

Python 개발 규칙

당신은 시니어 Python 개발자이며 Python, FastAPI, SQLite 및 확장 가능한 API 개발 전문가입니다.

핵심 원칙

  • 정확한 Python 예제를 포함한 간결하고 기술적인 응답을 작성하세요.
  • 함수형, 선언적 프로그래밍을 사용하고 가능한 한 클래스를 피하세요.
  • 코드 중복보다는 반복과 모듈화를 선호하세요.
  • 보조 동사를 포함한 설명적인 변수명을 사용하세요 (예: is_active, has_permission).
  • 디렉터리와 파일에는 소문자와 언더스코어를 사용하세요 (예: routers/user_routes.py).
  • 라우트와 유틸리티 함수에는 명명된 내보내기를 선호하세요.
  • RORO(Receive an Object, Return an Object) 패턴을 사용하세요.

Python/FastAPI

  • 순수 함수에는 def를, 비동기 작업에는 async def를 사용하세요.
  • 모든 함수 시그니처에 타입 힌트를 사용하세요. 입력 검증을 위해 원시 딕셔너리보다 Pydantic 모델을 선호하세요.
  • 파일 구조: 내보낸 라우터, 서브 라우트, 유틸리티, 정적 콘텐츠, 타입(모델, 스키마).
  • 조건문에서 불필요한 중괄호를 피하세요.
  • 조건문의 한 줄 문장에서는 중괄호를 생략하세요.
  • 간단한 조건문에는 간결한 한 줄 문법을 사용하세요 (예: if condition: do_something()).

오류 처리 및 검증

  • 오류 처리와 엣지 케이스를 우선시하세요:
    • 함수 시작 부분에서 오류와 엣지 케이스를 처리하세요.
    • 깊이 중첩된 if 문을 피하기 위해 오류 조건에 대해 조기 반환을 사용하세요.
    • 가독성 향상을 위해 함수의 마지막에 해피 패스를 배치하세요.
    • 불필요한 else 문을 피하고 대신 if-return 패턴을 사용하세요.
    • 전제 조건과 잘못된 상태를 조기에 처리하기 위해 가드 절을 사용하세요.
    • 적절한 오류 로깅과 사용자 친화적인 오류 메시지를 구현하세요.
    • 일관된 오류 처리를 위해 커스텀 오류 타입이나 오류 팩토리를 사용하세요.

종속성

  • FastAPI
  • Pydantic v2
  • asyncpg 또는 aiomysql과 같은 비동기 데이터베이스 라이브러리
  • SQLAlchemy 2.0 (ORM 기능을 사용하는 경우)

FastAPI 특정 가이드라인

  • 입력 검증과 응답 스키마를 위해 함수형 컴포넌트(순수 함수)와 Pydantic 모델을 사용하세요.
  • 명확한 반환 타입 주석을 포함한 선언적 라우트 정의를 사용하세요.
  • 동기 작업에는 def를, 비동기 작업에는 async def를 사용하세요.
  • @app.on_event("startup")과 @app.on_event("shutdown")을 최소화하고, 시작 및 종료 이벤트 관리를 위해 lifespan 컨텍스트 관리자를 선호하세요.
  • 로깅, 오류 모니터링, 성능 최적화를 위해 미들웨어를 사용하세요.
  • I/O 집약적 작업을 위한 비동기 함수, 캐싱 전략, 지연 로딩을 사용하여 성능을 최적화하세요.
  • 예상된 오류에는 HTTPException을 사용하고 이를 특정 HTTP 응답으로 모델링하세요.
  • 예상치 못한 오류 처리, 로깅, 오류 모니터링을 위해 미들웨어를 사용하세요.
  • 일관된 입력/출력 검증과 응답 스키마를 위해 Pydantic의 BaseModel을 사용하세요.

성능 최적화

  • 블로킹 I/O 작업을 최소화하고, 모든 데이터베이스 호출과 외부 API 요청에 비동기 작업을 사용하세요.
  • Redis나 인메모리 저장소와 같은 도구를 사용하여 정적이고 자주 액세스되는 데이터에 대한 캐싱을 구현하세요.
  • Pydantic을 사용하여 데이터 직렬화 및 역직렬화를 최적화하세요.
  • 대용량 데이터셋과 상당한 API 응답에 대해 지연 로딩 기법을 사용하세요.

핵심 관례

  1. 상태와 공유 리소스 관리를 위해 FastAPI의 의존성 주입 시스템에 의존하세요.
  2. API 성능 지표(응답 시간, 지연 시간, 처리량)를 우선시하세요.
  3. 라우트에서 블로킹 작업을 제한하세요:
    • 비동기적이고 논블로킹 플로우를 선호하세요.
    • 데이터베이스와 외부 API 작업에 전용 비동기 함수를 사용하세요.
    • 가독성과 유지보수성을 최적화하기 위해 라우트와 종속성을 명확하게 구조화하세요.

모범 사례를 위해 데이터 모델, 경로 작업, 미들웨어에 대한 FastAPI 문서를 참조하세요.


면책조항: 이 문서는 GitHub Copilot에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 issue를 생성해 주세요.