자바칩

Flask는 동기인데 동시에 여러 요청을 처리할 수 있을까? 본문

Study

Flask는 동기인데 동시에 여러 요청을 처리할 수 있을까?

아기제이 2025. 5. 22. 14:16
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 앱 자체는 동기여도, 운영 환경은 병렬처리되도록 구성하면 됩니다.