Spaces:
Running
Running
File size: 1,748 Bytes
000bfd1 f56051d 7c28043 f56051d 000bfd1 068fdbc 78a2dc6 000bfd1 f56051d 000bfd1 f56051d 000bfd1 f56051d 000bfd1 f56051d 068fdbc 000bfd1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
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"
|