Spaces:
Running
Running
修改启动命令为 Gunicorn,添加 Gunicorn 配置文件,移除 Uvicorn 启动逻辑,更新依赖项以支持 Gunicorn
Browse files- Dockerfile +2 -1
- app.py +0 -3
- gunicorn.conf.py +36 -0
- 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 |
-
|
|
|
|
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
|