import multiprocessing # 监听地址和端口 bind = "0.0.0.0:7860" # 修改工作进程数配置策略 # 对于CPU密集型应用,建议设置为 CPU核心数 + 1 workers = 3 # 每个工作进程的线程数 # 设置为2,增加并发处理能力 threads = 2 # 请求超时时间 timeout = 600 keepalive = 5 # keep-alive 连接等待时间,建议设置较小值 graceful_timeout = 30 # 优雅关闭超时时间,给进程2分钟清理资源 # 工作方式 worker_class = "uvicorn.workers.UvicornWorker" # 提高每个工作进程的并发连接数 worker_connections = 2000 # 优化工作进程配置 #max_requests = 1000 # 工作进程处理多少个请求后自动重启 #max_requests_jitter = 50 # 添加随机重启偏差,避免同时重启 #graceful_timeout = 120 # 优雅重启超时时间 # keepalive超时设置 #keepalive = 5 # 保持连接超时时间 # 工作模式 worker_tmp_dir = "/dev/shm" # 使用内存文件系统提高性能 preload_app = False # 修改为 False,避免重复加载 # 添加新的配置 reload = False # 禁用自动重载 daemon = False # 非守护进程模式运行 # 添加应用初始化钩子 def when_ready(server): # 当 Gunicorn 准备好时执行 server.log.info("Server is ready. Doing nothing.") def post_fork(server, worker): # 当 worker 进程被 fork 后执行 server.log.info(f"Worker spawned (pid: {worker.pid})") # 进程名称前缀 proc_name = 'gunicorn_fastapi' # 访问日志文件 accesslog = "access.log" access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"' # 错误日志文件 errorlog = "error.log" # 日志级别 loglevel = "info"