parkerjj commited on
Commit
000bfd1
·
1 Parent(s): 5c10677

修改启动命令为 Gunicorn,添加 Gunicorn 配置文件,移除 Uvicorn 启动逻辑,更新依赖项以支持 Gunicorn

Browse files
Files changed (4) hide show
  1. Dockerfile +2 -1
  2. app.py +0 -3
  3. gunicorn.conf.py +36 -0
  4. requirements.txt +1 -0
Dockerfile CHANGED
@@ -44,4 +44,5 @@ RUN --mount=type=secret,id=HF_Token,mode=0444,required=true \
44
  # git clone $(cat /run/secrets/HF_Token)
45
 
46
 
47
- CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "3"]
 
 
44
  # git clone $(cat /run/secrets/HF_Token)
45
 
46
 
47
+ # 修改启动命令,使用配置文件
48
+ CMD ["gunicorn", "app:app", "-c", "gunicorn.conf.py"]
app.py CHANGED
@@ -63,6 +63,3 @@ async def root():
63
  return {"message": "Welcome to the API. Use /api/aaa or /api/bbb for processing."}
64
 
65
 
66
- if __name__ == "__main__":
67
- import uvicorn
68
- uvicorn.run(app, host="0.0.0.0", port=7860)
 
63
  return {"message": "Welcome to the API. Use /api/aaa or /api/bbb for processing."}
64
 
65
 
 
 
 
gunicorn.conf.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import multiprocessing
2
+
3
+ # 监听地址和端口
4
+ bind = "0.0.0.0:7860"
5
+
6
+ # 工作进程数,这里设置为 CPU 核心数 * 2 + 1
7
+ workers = min(multiprocessing.cpu_count() + 1, 3)
8
+
9
+ # 工作方式
10
+ # 方案1: 使用 Uvicorn 的 worker (推荐)
11
+ worker_class = "uvicorn.workers.UvicornWorker"
12
+
13
+ # 方案2: 使用 Uvicorn 的 worker 并开启 HTTP/2
14
+ # worker_class = "uvicorn.workers.UvicornH2Worker"
15
+
16
+ # 方案3: 使用传统的同步 worker (不推荐,会损失 FastAPI 的异步特性)
17
+ # worker_class = "sync"
18
+
19
+ # 超时时间
20
+ timeout = 300
21
+
22
+ # 并发客户端最大数量
23
+ worker_connections = 1000
24
+
25
+ # 进程名称前缀
26
+ proc_name = 'gunicorn_fastapi'
27
+
28
+ # 访问日志文件
29
+ accesslog = "access.log"
30
+ access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'
31
+
32
+ # 错误日志文件
33
+ errorlog = "error.log"
34
+
35
+ # 日志级别
36
+ loglevel = "info"
requirements.txt CHANGED
@@ -18,3 +18,4 @@ tensorflow==2.16.2
18
  pydantic==2.9.2
19
  pydantic_core==2.23.4
20
  nltk
 
 
18
  pydantic==2.9.2
19
  pydantic_core==2.23.4
20
  nltk
21
+ gunicorn