Python
-
FastAPI Lifespan: 애플리케이션 생명주기 관리Python 2026. 1. 4. 04:13
1. Context ManagerFastAPI Lifespan을 이해하기 위해서는 먼저 Python의 Context Manager 패턴을 이해해야 합니다.1.1 with 문과 Context Manager# 파일 처리 - 가장 흔한 Context Manager 사용 예with open("file.txt", "r") as f: content = f.read()# 여기서 파일이 자동으로 닫힘with 문이 하는 일:1. 진입: __enter__() 호출 → 리소스 획득2. 본문: 블록 내 코드 실행3. 퇴장: __exit__() 호출 → 리소스 해제 (예외 발생해도 실행)1.2 Context Manager 프로토콜Context Manager는 두 개의 메서드로 정의됩니다:class FileManager: ..
-
FastAPI Clean ExamplePython 2025. 12. 31. 00:29
참조: ivan-borovets/fastapi-clean-example작성일: 2025-12-30이 프로젝트에서 사용하는 아키텍처 패턴들의 원본 출처와 핵심 개념입니다.Clean Architecture항목내용창시자Robert C. Martin ("Uncle Bob")발표2012년 8월 블로그 → 2017년 책 출간원본The Clean Architecture책Clean Architecture: A Craftsman's Guide to Software Structure and Design (2017)핵심 원칙:의존성 규칙 (Dependency Rule): 의존성은 항상 안쪽(고수준)으로만 향한다독립성: Framework, UI, Database, 외부 에이전시로부터 독립적동심원 구조: Entities → U..
-
arq: AsyncIO-native Task QueuePython 2025. 12. 29. 20:30
Overviewarq는 Python asyncio를 네이티브로 지원하는 분산 태스크 큐이다.Celery의 복잡성 없이 async/await 패턴을 그대로 사용할 수 있다.Celery vs arq항목Celeryarq동시성 모델prefork, gevent, eventletasyncio (네이티브)BrokerRabbitMQ, Redis, SQS 등Redis only메모리~4-8KB per greenlet~2-4KB per coroutineCanvas (Chain, Group)✅ 지원❌ 미지원Beat (스케줄링)✅ 내장⚠️ cron 함수로 대체Flower (모니터링)✅ 생태계❌ 직접 구현복잡도높음낮음핵심 개념1. Worker 정의# worker.pyfrom arq import create_poolfrom arq..
-
Celery: Python 분산 태스크 큐Python 2025. 12. 25. 22:06
원문: Celery Documentation저자: Ask Solem (2009~)들어가며 Celery는 Python으로 작성된 분산 태스크 큐 시스템이다. 2009년 Ask Solem이 Django 프로젝트의 비동기 작업 처리를 위해 개발했으며, 현재 Python 생태계에서 가장 널리 사용되는 비동기 작업 처리 라이브러리다. (이코에코에선 RabbitMQ, FastAPI와 함께 쓰였다.) Celery의 핵심 철학단순함: 복잡한 분산 시스템을 간단한 데코레이터로 추상화유연함: RabbitMQ, Redis 등 다양한 브로커 지원신뢰성: 재시도, DLQ, 모니터링 내장Celery 탄생 배경Django의 한계2009년, Django 웹 애플리케이션들은 심각한 문제에 직면했다:┌───────────────────..
-
동시성 모델과 Green ThreadPython 2025. 12. 24. 21:06
이 문서는 Python에서 사용 가능한 4가지 동시성 모델을 비교한다.먼저 동시성을 보다 잘 이해하기 위해 혼동되는 개념인 병렬성과의 차이를 짚고 가자.┌─────────────────────────────────────────────────────────────┐│ 동시성 vs 병렬성 │├─────────────────────────────────────────────────────────────┤│ ││ Concurrency (동시성): ││ ───..
-
Event Loop: GeventPython 2025. 12. 24. 20:58
핵심 질문: Event Loop란 무엇이며, 왜 서로 다른 Event Loop는 충돌할까? Event Loop는 단일 스레드에서 여러 I/O 작업을 동시에 처리하는 메커니즘이다.┌─────────────────────────────────────────────────────────────┐│ Event Loop의 본질 │├─────────────────────────────────────────────────────────────┤│ ││ "루프 안에서 I/O 이벤트를 감지하고, ..