# Gunicorn 配置文件 import os import multiprocessing # 服务器绑定 bind = "0.0.0.0:5000" backlog = 2048 # 工作进程 workers = multiprocessing.cpu_count() * 2 + 1 # 推荐的工作进程数 worker_class = "sync" worker_connections = 1000 timeout = 30 keepalive = 2 max_requests = 1000 max_requests_jitter = 50 # 日志 accesslog = "logs/gunicorn_access.log" errorlog = "logs/gunicorn_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' # 进程命名 proc_name = "ball-tracking-server" # 安全 user = os.getenv('GUNICORN_USER', 'www-data') group = os.getenv('GUNICORN_GROUP', 'www-data') tmp_upload_dir = None # 预加载应用 preload_app = True # SSL (如果需要) # keyfile = "/path/to/ssl/private.key" # certfile = "/path/to/ssl/certificate.crt" # 开发环境配置 (生产环境请注释掉) # reload = True # reload_extra_files = ["app/"] def when_ready(server): server.log.info("Gunicorn server is ready. Listening on: %s", server.address) 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)