파이썬 (Python)

파이썬 (Python)

MacOS mysqlclient & psycopg2 환경 설정

개요MacOS에서 파이썬 DB 관련 라이브러리인 mysqlclient와 psycopg2를 사용할 때 겪을 수 있는 의존 라이브러리에 관한 정리 글 입니다.brew를 사용합니다.mysqlclient오류Exception: Can not find valid pkg-config name.Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually설정법mysqlclient를 사용하기 위해서는 mysql또는 mysql-client를 설치해야한다.mysql 또는 mysql-client 설치mysqlbrew install mysql pkg-configmysql-client용량: 약 126MBmysql-client@9.0은 mysql_native_passwo..

파이썬 (Python)

Celery 재시도 로직과 Exponential Backoff and Jitter

개요Celery는 파이썬에서 널리 사용되는 비동기 작업 큐 라이브러리로, 주로 분산 작업 처리와 백그라운드 작업 실행을 위해 활용됩니다.비동기 작업에는 외부 API 호출이 포함되는 경우가 많으며, 이러한 작업은 외부 환경의 영향을 받기 쉽습니다. 네트워크 지연, 일시적인 API 장애, 서비스의 부하 등으로 인해 작업이 실패할 수 있습니다. 그러나 실패 원인이 일시적인 네트워크 문제인지, API 서비스의 장기적인 장애인지 즉시 판단하기는 어렵습니다.이 글에서는 Exponential Backoff와 Jitter라는 안정성 보장 기법을 소개하고, 이를 Celery에 적용해 외부 API 통합 시스템의 신뢰성과 복원력을 강화하는 방법을 설명합니다.Celery Task의 재시도 로직Celery task를 정의할때는..

파이썬 (Python)

Python isinstance() 사용시의 주의점

isinstance()파이썬에는 isinstance() 라는 인스턴스가 특정 클래스/데이터 타입인지 검사할 수 있는 메서드가 존재한다. 이는 약타입 언어인 파이썬에서 유용하게 사용될 수 있는 기능이다.import datetime as dtinteger = 1print(isinstance(integer, int)) # Truetoday = dt.date.today()print(isinstance(today, dt.date)) # Truedate → datetime 변환 로직해당 isinstance() 메서드를 이용해 date 객체를 datetime으로 변환하는 다음과 같은 로직이 있다.import datetime as dtdef convert_to_datetime(date: dt.date | dt.da..

파이썬 (Python)

Celery worker OOM Killed 문제 해결기

개요Celery를 이용하다 celery worker OOM(Out of Memory) Kill 문제가 발생한 것을 해결한 경험을 정리합니다. 최초 문제 발생Celery를 이용하던 중 어느 순간 도커를 이용하여 가동해 둔 Celery worker가 정지해 있는 것을 발견했습니다. 이를 재가동시킨 후 리소스 사용량이 많아 중지된 것인지 확인해 보았습니다.재시작한 컨테이너의 평시 CPU, 메모리 사용량과 디스크 사용량을 확인해 보았습니다.>> docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS45dc370549da celery_wo..

파이썬 (Python)

파이썬 이진탐색 모듈

여태껏 파이썬에서 기본적으로 제공되는 이진탐색 함수가 없는 줄 알았는데, bisect라는 배열 이진 분할 알고리즘 모듈을 찾았습니다. from bisect import bisect_left 위와 같은 방법으로 import 할 수 있습니다. bisect_left(), bisect_right() 코드 def bisect_left(a, x, lo=0, hi=None, *, key=None): """Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e = x. So if x alrea..

파이썬 (Python)

VSCode로 Poetry 사용시 interpreter 인식 시키는 방법

VSCode에서 바로 Poetry로 만든 가상 환경에서 작업 시에는 Poetry의 가상 환경 virtualenv가 인식이 되지 않는 문제가 있다. 이는 바로 Poetry가 작업 환경이 아닌 다른 로컬 폴더에 가상 환경을 저장하기 때문인데, 이를 수정하기 위해서는 작업 환경으로 가상 환경 폴더를 이동시켜주면 된다.poetry config virtualenvs.in-project truepoetry config virtualenvs.path "./.venv"poetry install위의 명령어로 가상 환경의 이동이 끝났다면, VSCode를 재시작 해주면 자동으로 인식하여 인터프리터를 잡아 준다. 이상태에서도 게속 제대로 환경을 잡지 못한다면, Cmd + Shift + P(Ctrl + Shift + P)를 눌..

파이썬 (Python)

파이썬 가상 환경, 패키지 매니저 정리(venv, poetry, pipvenv...)

파이썬은 node.js의 npm, yarn과 같은 패키지 매니저와 package.json처럼 표준화된 형식이 없다. 이에 파이썬의 다양한 가상 환경, 패키지 매니저를 정리하였습니다. 추천하는 것은 간단하게 사용한다면, pip + venv를 사용하는 것을 추천하고 아니면 poetry 또는 pipenv를 추천합니다. pip 패키지 매니저 파이썬에서 기본적으로 제공하는 패키지 매니저다. pip freeze > requirements.txt # 현재 설치된 패키지 목록을 저장한다 pip install -r requirements.txt # 패키지 목록에 있는 패키지를 설치한다 위와 같은 방식으로 패키지를 관리할 수 있다. 패키지 의존성을 확인하기 어렵다 https://github.com/pypa/pip GitH..

Muromi
'파이썬 (Python)' 카테고리의 글 목록