Files
TEMP_spec_system_noad/gunicorn.conf.py
2025-09-25 08:44:44 +08:00

53 lines
1.3 KiB
Python

# Gunicorn 生產環境配置
import multiprocessing
import os
# 服務器設置
bind = "0.0.0.0:5000"
workers = min(multiprocessing.cpu_count() * 2 + 1, 8) # 最多8個worker
worker_class = "sync"
worker_connections = 1000
max_requests = 1000
max_requests_jitter = 50
# 超時設置
timeout = 300
keepalive = 5
graceful_timeout = 300
# 日誌設置
accesslog = "-" # stdout
errorlog = "-" # stderr
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'
# 進程設置
preload_app = True
daemon = False
pidfile = "/tmp/gunicorn.pid"
# 性能調優
worker_tmp_dir = "/dev/shm" # 使用內存作為臨時目錄
# 安全設置
limit_request_line = 8190
limit_request_fields = 100
limit_request_field_size = 8190
def when_ready(server):
server.log.info("Server is ready. Spawning workers")
def worker_int(worker):
worker.log.info("worker received INT or QUIT signal")
def pre_fork(server, worker):
server.log.info("Worker spawned (pid: %s)", worker.pid)
def post_fork(server, worker):
server.log.info("Worker spawned (pid: %s)", worker.pid)
def post_worker_init(worker):
worker.log.info("Worker initialized (pid: %s)", worker.pid)
def worker_abort(worker):
worker.log.info("Worker aborted (pid: %s)", worker.pid)