python 5

Flask 서버 시작 시간 최적화하기: 지연 로딩(Lazy Loading) 전략

문제 상황  Flask 서버를 운영하면서 가장 큰 문제점 중 하나는 초기 시작 시간이 너무 오래 걸린다는 것입니다. 특히 AI 모델을 사용하는 서버의 경우, cv2, numpy, torch 등 무거운 라이브러리들의 import 시간이 상당합니다.      import cv2import numpy as npimport torchfrom PIL import Imagefrom openai import OpenAI# ... 기타 무거운 라이브러리들      이러한 방식은 서버가 시작될 때 모든 라이브러리를 로드하므로, 단순한 health check나 WebSocket 연결과 같은 가벼운 요청도 서버가 완전히 로드될 때까지 기다려야 했습니다.  해결 방안: 지연 로딩 전략  이 문제를 해결하기 위해 지연 로딩(L..

Socket.IO 클라이언트가 메시지를 일부만 수신하는 문제

문제 설명:Flask-SocketIO 기반의 서버와 Node.js 클라이언트를 사용하여 WebSocket으로 데이터를 송수신하는 시스템을 개발 중입니다. 서버는 클라이언트로부터 이미지를 업로드받고, 처리 후 각 클라이언트에 실시간으로 스트리밍 응답(gpt_response 이벤트)을 전송문제는 서버에서 각 클라이언트의 SID에 맞춰 메시지를 전송했음이 로그에서 확인되지만, 일부 클라이언트는 메시지를 수신하지 못하는 상황이 발생합니다. 예를 들어, 5개의 클라이언트를 실행했을 때 서버는 모두에게 메시지를 전송했지만, 클라이언트 로그에서는 2~3개만 응답을 받는 문제가 있다.서버 환경:Flask-SocketIO와 gevent를 사용 중이며, 메시지를 각 클라이언트의 SID에 맞춰 전송합니다.flask_serv..

flask 서버 Docker로 패키징

Flask 애플리케이션을 Docker로 패키징하기클라우드에 서버를 실제로 올리기 위해 여러 가지 방법이 있지만, 저는 Google Cloud Run을 선택했습니다. 그 이유는 Google Cloud Run이 서버리스 환경이어서 별도의 요청이 없으면 비용이 들지 않는다는 점이 가장 매력적이었기 때문입니다.Google Cloud Run에 배포하려면 먼저 Flask 코드를 Docker로 패키징해야 합니다. 여기서는 제가 사용한 Docker로 패키징하는 방법을 정리해보겠습니다.사전 준비Docker 설치Windows를 사용하는 경우 WSL2 설치Dockerfile 작성Docker로 패키징하기 위해서는 Dockerfile만 있으면 됩니다. 아래는 제가 작성한 Dockerfile의 내용입니다:dockerfile코드 ..

Paddle OCR 메모리 누수 (memory leak) 비교

Paddle OCR 사용중 메모리 누수가 너무 심해서 메모리 추적을 한번 해봤는데요 일단 서버에 지속적으로 이미지를 보내주는 python 코드를 간단하게 짜서 1초 간격으로 이미지를 계속 보냈습니다.총 이미지는 320장 보냈고 그 후 mprof run --interval 0.5 python flask_server.py  명령어 통해서메모리를 .dat 파일로 기록해줍니다그후 메모리를 그래프화 하려면 아래 코드를 진행시켜 주면mprof plot .\resources.dat아래 사진처럼 메모리추적을 해주니 실제 어플리케이션 배포 시 많은 요청이 오면 어떻게 대응하는지 한번 살펴볼게요  1. 프로젝트 기본 코드 일단 기본으로 돌렸을때는 메모리가 아래 처럼 됩니다.처음 구간에 Paddleocr,yolov5 모델 ..

다양한 OCR 모듈 사용해보며 느낀 점 (Tesseract, EasyOCR, PaddleOCR, Google Cloud Vision, Clova OCR)

다양한 OCR 모듈 사용해보며 느낀 점 (Tesseract, EasyOCR, PaddleOCR, Google Cloud Vision, Clova OCR)프로젝트를 진행하면서 핵심 기술인 OCR에 대해 직접 다양한 모듈을 사용해 보았습니다. 각 OCR 모듈마다 특징이 뚜렷하게 나타났고, 이를 통해 프로젝트에 맞는 최적의 선택을 찾는 데 많은 도움이 되었습니다. 이번 포스팅에서는 제가 실제로 사용해 본 주요 OCR 모듈들의 사용 후기와 느낀 점을 공유하려 합니다.1. Tesseract OCR소개Google이 개발한 오픈소스 OCR 엔진으로, 다양한 언어를 지원하며 무료입니다.장점오픈소스로 수정 가능 (초보 개발자에겐 다소 무관한 장점).다양한 언어 인식에 강력 (하지만 한국어 인식률은 낮음).이미지 전처리를..