# 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)