# Gunicorn 설정 파일 - 400대 동시 접속 대응
import multiprocessing

# 서버 소켓
bind = "0.0.0.0:5000"
backlog = 2048

# 워커 프로세스 설정 (400대 대응)
workers = 6  # CPU * 2 + 1 (4코어 기준)
worker_class = "gevent"  # 비동기 워커
worker_connections = 1000  # 워커당 최대 연결 수
max_requests = 1500  # 메모리 누수 방지
max_requests_jitter = 200  # 랜덤 재시작

# 성능 최적화
preload_app = True  # 앱 미리 로드
timeout = 120  # 요청 타임아웃 (기본보다 증가)
keepalive = 10  # Keep-alive 연결 유지
graceful_timeout = 30  # 우아한 종료 시간

# 로깅
accesslog = "access.log"
errorlog = "error.log"
loglevel = "info"
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" %(D)s'

# 보안
limit_request_line = 4094
limit_request_fields = 100
limit_request_field_size = 8190

# 프로세스 이름
proc_name = "asset_management_server"

def when_ready(server):
    print("🚀 Asset Management Server Ready")
    print(f"🔧 Workers: {workers}")
    print(f"🌐 Listening on: {bind}")
    print(f"⚡ Worker class: {worker_class}")
    print(f"🎯 Max connections per worker: {worker_connections}")