본문 바로가기

Python10

python3/파이썬 Mutable 객체 default 매개변수로 인한 버그, 객체 멤버 변수 값 변경 예전에도 할당한적 없는 값이 객체에 멤버 변수에 계속 할당되는 이슈가 있었는데, 오랫동안 잊고지내다 또 발생해서..원인 찾는데 삽질 시~원하게 해주고 다시는 반복하지 않기 위해서 포스팅까지 작성해봅니다  문제 배경fastapi 앱을 TestClient & 멀티 쓰레드 환경에서 테스트하던 중 계속 DB primary 중복 에러가 발생했다..조금 트랙킹을 해보니 서로 다른 http scope간 데이터가 엉키는 현상이 발견됬다.여러 Session 클래스와 멀티 쓰레드 환경이다보니 어디부터 잘못된건지..  하나씩 데이터를 추적하면서 좁혀가려고하는데 엉키는 시점이 매번 다르고 착잡하던 와중에 아무래도 Session 소켓 내에서 데이터가 꼬이는 현상은 절대 아닐거 같고 (설명에도 TestClient는 thread .. 2025. 3. 3.
[Fast API][Starlette] keepalive request(요청) 지연 현상 / background tasks / slow request Fast API는 python3 ASGI WAS 프레임워크입니다. 흔히 웹서버로 uvicorn을 사용하고있습니다. 이번 포스팅은 client > proxy(i.g. nginx) > uvicorn > Fast API 통신과정에서 uvicorn까지 트래픽이 들어왔지만 Fast API의 미들웨어에 인입 로그도 찍히지 않고 request가 지연되는 현상에 대한 트러블슈팅입니다. 이슈 확인 1. background task 기능을 포함한 API를 호출후, 다음 API 요청이 간헐적으로 매우 느림(오지 않음) 2. Fast API의 미들웨어 로그상 아무런 요청/인입이 없음 3. background task가 완료되면 요청이 들어옴 원인 1. Keep-alive 유지 매번 발생하는 이슈가 아니여서 원인을 찾는게 쉽지.. 2023. 7. 17.
pypi / pip / 파이썬 패키지 해킹 악성코드 pypi(pip), npm 과 같은 방대한 오픈소스 패키지 저장소의 안전성에 대해서 생각은 해봤지만 깊게 고민해보지는 않고 살던 찰나 유튜브 알고리즘에 관련 영상을 보고 머리속으로만 생각하던 일들을 실천해야겠다고 생각들었다.. > 본 포스팅은 python 생태계에 대해서만 자세하게 다룹니다. (npm은 몰라여~) 유튭 출처: https://www.youtube.com/watch?v=DjfpcmK62ew 요약 해당 영상은 pypi(pip), npm 과 같은 방대한 오픈소스 패키지 생태계에서 악의적인 코드 혹은 의존성으로 생기는 문제들을 이야기하고 있다. ## Left-pad - 11줄의 코드로 구성된, 텍스트 문자의 왼쪽에 패딩을 넣어주는 패키지 - 수 많은 패키지들이 left-pad를 사용하고 있었고, .. 2023. 5. 1.
pyinstaller, bootloader는 무엇인가? pyinstaller는 무엇인가? python3는 현대 대표적인 인터프리터 언어로 작성(개발)된 프로그램을 실행시키기 위해서는 개발 환경과 동일하거나 호환 가능한 버전의 인터프리터 프로그램과 개발하면서 사용한 파이썬 패키지가 추가로 필요합니다. pyinstaller는 다른 컴퓨팅 시스템에서도 파이썬 프로그램을 쉽게 배포할 수 있도록 실행에 필요한 모든 것들을 "패키징" 합니다. pyinstaller는 CPU가 바로 이해할 수 있는 기계어로의 "컴파일"이 아닌 실행 환경의 "패키징"임을 명심해야합니다. 그렇기 때문에 인터프리터 언어로서 실행 속도 개선을 기대할 수 없습니다. 파이썬의 실행속도를 개선하고 싶은 경우, cython등을 사용해서 속도 개선을 원하는 모듈, 로직등은 컴파일언어로 작성후 공유 라이브.. 2023. 1. 24.