Builder.shin
Python
142개의 게시물
Python
Python asyncio에서 blocking 코드 처리하기
FastAPI 프로젝트에서 sync 라이브러리를 사용하면서 이벤트 루프가 블로킹되는 문제를 겪었다. run_in_executor를 활용해 CPU 바운드 작업을 별도 스레드로 분리하여 해결했다.
2025년 1월 24일
Python
Python asyncio로 API 동시 호출 최적화하기
레거시 배치 작업에서 순차 API 호출로 인한 성능 문제를 asyncio와 aiohttp로 해결했다. 실행 시간을 80% 단축할 수 있었다.
2024년 11월 11일
Python
Python 비동기 작업에서 ThreadPoolExecutor vs ProcessPoolExecutor 선택 기준
CPU 바운드 작업 처리를 위해 멀티프로세싱을 도입하면서 ThreadPoolExecutor와 ProcessPoolExecutor의 성능 차이를 테스트했다. I/O 바운드와 CPU 바운드 작업의 특성에 따라 적절한 선택이 필요했다.
2024년 10월 30일
Python
FastAPI 백그라운드 태스크에서 DB 세션 관리 문제 해결
FastAPI의 BackgroundTasks를 사용하면서 DB 세션이 먼저 닫혀버리는 문제를 겪었다. 의존성 주입 방식과 세션 라이프사이클을 조정해 해결한 과정을 기록한다.
2024년 10월 20일
Python
FastAPI에서 백그라운드 태스크 처리 시 예외 처리 문제
FastAPI의 BackgroundTasks를 사용하다가 예외가 발생해도 로그에 남지 않는 문제를 겪었다. 백그라운드 태스크는 응답 반환 후 실행되기 때문에 별도의 예외 처리가 필요했다.
2024년 9월 30일
Python
Python 비동기 작업에서 asyncio.gather 예외 처리 패턴
여러 API를 병렬로 호출하는 작업에서 일부가 실패해도 나머지 결과를 받아야 하는 요구사항이 있었다. asyncio.gather의 return_exceptions 옵션을 활용해 안정적인 병렬 처리를 구현했다.
2024년 9월 25일
Python
FastAPI에서 Pydantic V2 마이그레이션 후 발생한 이슈 정리
FastAPI 프로젝트에서 Pydantic V2로 업그레이드하면서 겪은 몇 가지 breaking change를 정리했다. 특히 validator 데코레이터와 Config 클래스 관련 변경사항이 많았다.
2024년 9월 10일
Python
FastAPI에서 비동기 DB 커넥션 풀 관리하기
FastAPI 프로젝트에서 asyncpg를 사용하면서 커넥션 풀 고갈 문제를 겪었다. 동시 요청이 많아지면서 'too many connections' 에러가 발생했고, 적절한 풀 사이징과 라이프사이클 관리로 해결했다.
2024년 8월 13일
Python
Python asyncio로 외부 API 호출 성능 개선하기
레거시 배치 작업에서 순차적으로 처리하던 외부 API 호출을 asyncio로 전환했다. 약 300개의 API 호출 시간이 15분에서 2분으로 단축되었고, 코드 변경은 생각보다 간단했다.
2024년 6월 21일
Python
Python 비동기 처리에서 발생한 Event Loop 블로킹 해결
FastAPI 서비스에서 특정 요청이 다른 요청들을 블로킹하는 문제를 발견했다. asyncio의 event loop 특성을 이해하지 못해 동기 함수를 잘못 사용한 것이 원인이었다.
2024년 5월 11일
Previous
1
2
3
4
More pages
15
Next
카테고리