파이썬/Fast API

    pyinstrument : 성능 최적화를 위한 프로파일링

    pyinstrument는 Python 코드의 성능을 프로파일링하는 강력한 도구입니다. 특히 FastAPI 애플리케이션에서 병목 현상을 찾고 성능을 최적화하는 데 매우 유용합니다. 기본 설정from fastapi import FastAPIfrom pyinstrument import Profilerfrom pyinstrument.middleware import ProfilerMiddlewareapp = FastAPI()# 전체 애플리케이션 프로파일링app.add_middleware(ProfilerMiddleware)# 특정 엔드포인트 프로파일링@app.get("/users/{user_id}")async def get_user(user_id: int): profiler = Profiler() pro..

    FastAPI 쿼리 매개변수

    쿼리 매개변수는 FastAPI에서 데이터를 전달받는 핵심적인 방법 중 하나입니다. 다양한 데이터 타입을 어떻게 처리하는지 자세히 알아보겠습니다.기본적인 쿼리 매개변수 사용from fastapi import FastAPI, Queryfrom typing import Optionalapp = FastAPI()@app.get("/items/")async def read_items( skip: Optional[int] = Query(default=0, ge=0), limit: int = Query(default=10, le=100), search: str = Query(default=None, min_length=3, max_length=50)): return { "skip":..

    FastAPI와 Nginx : 웹 서버 구성

    Nginx란 무엇인가?Nginx(엔진엑스)는 고성능 웹 서버이자 리버스 프록시, 로드 밸런서, HTTP 캐시로 사용되는 오픈 소스 소프트웨어입니다. 2004년 Igor Sysoev가 개발한 이후, 현재 전 세계 웹 서버 시장의 상당 부분을 차지하고 있습니다.주요 특징:비동기 이벤트 기반 아키텍처낮은 메모리 사용량높은 동시성 처리 능력정적 파일 서빙 최적화FastAPI에 Nginx가 필요한 이유리버스 프록시 기능# nginx.confserver { listen 80; server_name example.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; prox..

    FastAPI 프로젝트 배포 자동화 가이드 Part 3: 무중단 배포와 모니터링

    이번 파트에서는 무중단 배포 구성과 모니터링 시스템 구축에 대해 알아보겠습니다.무중단 배포 설정Blue-Green 배포 방식을 구현하기 위한 스크립트입니다.# scripts/blue_green_deploy.pyimport dockerimport osimport timeclass BlueGreenDeployer: def __init__(self): self.client = docker.from_env() self.blue_port = 8000 self.green_port = 8001 def get_current_deployment(self): containers = self.client.containers.list( filte..

    FastAPI 프로젝트 배포 자동화 가이드 Part 2: CD 파이프라인과 서버 배포

    Part 1에서 구성한 자동화된 빌드 환경을 바탕으로, 이제 실제 리눅스 서버에 배포하는 과정을 자동화해보겠습니다.CD 워크플로우 구성# .github/workflows/cd.ymlname: CD Pipelineon: workflow_run: workflows: ["CI Pipeline"] types: - completed branches: [main]jobs: deploy: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - uses: actions/checkout@v2 - name: Get Python Version id: ..

    프로젝트 배포 자동화 가이드 Part 1: 개발 환경 구성

    윈도우에서 개발한 FastAPI 프로젝트를 리눅스 환경에서 배포하는 과정을 자동화해보겠습니다. 특히 Python 버전과 의존성 관리를 자동화하여 편리하게 배포할 수 있도록 구성하겠습니다.프로젝트 구조 설정my-fastapi-project/├── app/│ ├── api/│ ├── core/│ ├── models/│ └── main.py├── tests/├── .github/│ └── workflows/│ ├── ci.yml│ └── cd.yml├── scripts/│ ├── generate_requirements.py│ ├── get_python_version.py│ └── start.sh├── Dockerfile├── docker-compose.yml└..

    FastAPI-Cache로 구현하는 효율적인 API 캐싱

    FastAPI-Cache 소개와 설치FastAPI-Cache는 FastAPI 애플리케이션에서 손쉽게 캐싱을 구현할 수 있게 해주는 라이브러리입니다. Redis, Memcached 등 다양한 백엔드를 지원합니다.pip install fastapi-cache2[redis] # Redis 백엔드 사용시기본 설정FastAPI 애플리케이션에 캐시를 설정하는 방법입니다.from fastapi import FastAPIfrom fastapi_cache import FastAPICachefrom fastapi_cache.backends.redis import RedisBackendfrom redis import asyncio as aioredisapp = FastAPI()@app.on_event("startup")a..

    Router Tags 활용

    FastAPI의 include_router에서 사용되는 tags는 OpenAPI(Swagger) 문서화와 API 그룹화에 매우 유용합니다. 특히 Enum을 활용하면 일관성 있는 태그 관리가 가능합니다.기본적인 태그 사용법가장 단순한 형태의 태그 사용입니다.from fastapi import APIRouter, FastAPIapp = FastAPI()router = APIRouter()# 문자열 리스트로 태그 지정app.include_router( router, prefix="/users", tags=["users", "auth"] # 여러 태그 지정 가능)Enum을 활용한 태그 관리대규모 애플리케이션에서는 Enum을 사용하여 태그를 체계적으로 관리할 수 있습니다.from enum imp..