자바칩
Flask는 동기인데 동시에 여러 요청을 처리할 수 있을까? 본문
728x90
✅ Flask는 동기(synchronous) 프레임워크지만, 동시에 여러 사용자가 접근해도 문제없습니다.
다만, **“어떤 방식으로 서버를 구동하느냐”**에 따라 병렬 처리 방식이 달라집니다.
🔍 1. Flask는 기본적으로 "동기 + 단일 쓰레드"입니다
- 기본 flask run 개발 서버는 단일 프로세스 + 단일 쓰레드
- 즉, 동시에 여러 요청이 오면 순차적으로 처리됩니다 → 실서비스용 아님
❗ 그래서 Flask는 반드시 WSGI 서버와 함께 사용해야 합니다:
WSGI 서버 | 역할 |
Gunicorn | 프로세스 또는 쓰레드 풀을 만들어 병렬 요청 처리 |
uWSGI | 고성능 멀티프로세스 서버 |
mod_wsgi | Apache 연동용 |
Waitress | Windows에서 많이 사용 |
🔧 2. Gunicorn 예시 (실서비스 환경)
gunicorn -w 4 -b 0.0.0.0:5000 app:app
- -w 4: 4개의 worker 프로세스 생성
- 클라이언트 요청이 들어오면 다른 프로세스/쓰레드가 처리하므로 동시성 확보
✅ 즉, Flask 앱 자체는 동기적이지만, WSGI 서버가 병렬 처리를 보장합니다.
💬 그리고 MongoDB(pymongo)는?
- pymongo는 쓰레드 세이프(thread-safe) 하므로
- 여러 프로세스/쓰레드에서 동시에 접근해도 문제 없습니다
MongoClient 내부의 커넥션 풀에서 자동으로 병렬 요청을 적절히 분배합니다
✅ 정리: 실전 운영 시 구조
[ 사용자 수십~수백 명 ]
↓
[ Gunicorn / uWSGI ]
↓
[ Flask 앱 (동기 구조) ]
↓
[ pymongo → MongoDB (커넥션 풀 관리) ]
🧠 요약
질문 | 답변 |
Flask는 동기인데 여러 사용자 동시 요청 가능? | ✅ WSGI 서버(Gunicorn 등)로 해결 |
pymongo는 동시 접속 안전한가? | ✅ 내부 커넥션 풀로 처리됨 |
개발 서버(flask run)로도 동시 처리 되나? | ❌ X. 실제 서비스는 WSGI 서버 필수 |
🚀 실 서비스에서는 반드시 Gunicorn, uWSGI 등을 통해 멀티 워커로 Flask를 띄우세요.
Flask 앱 자체는 동기여도, 운영 환경은 병렬처리되도록 구성하면 됩니다.
'Study' 카테고리의 다른 글
[Nginx] 필수 개념 요약 (0) | 2025.06.19 |
---|---|
[Docker] React Docker 빌드 및 실행 방법 (0) | 2025.06.17 |
MongoDB 연결은 왜 한 번만 열고 공유해야 할까? (0) | 2025.05.22 |
[Docker] 이미지 / 컨테이너 / 도커 용어 개념 정리 (0) | 2025.04.18 |
FastAPI vs Spring Boot (1) | 2025.04.15 |