Skip to content

安全加固与性能优化#2

Open
ckckck wants to merge 2 commits intoaahl:mainfrom
ckckck:security-and-performance
Open

安全加固与性能优化#2
ckckck wants to merge 2 commits intoaahl:mainfrom
ckckck:security-and-performance

Conversation

@ckckck
Copy link

@ckckck ckckck commented Feb 28, 2026

改动概述

对项目进行安全加固和转写性能优化,适用于个人/可信网络部署场景。

安全加固

docker-compose.yml

  • 端口绑定改为 127.0.0.1:8820:80,仅限本机访问,防止意外暴露到外网
  • 镜像源改为官方 ghcr.io(原 ghcr.nju.edu.cn 镜像完整性无法验证)

Dockerfile

  • 添加非 root 用户 app,容器内以最小权限运行

asr2api/__init__.py

  • 设置 25MB 上传文件大小限制(client_max_size),防止内存耗尽攻击
  • 修复裸 except: 为具体异常类型(ValueError, IndexError, ContentTypeError),避免掩盖真实错误
  • CORS 从通配符 * 收紧为仅允许 localhost / 127.0.0.1,可通过 CORS_ORIGINS 环境变量自定义

性能优化

asr2api/__init__.py

  • 复用 Gradio Client:启动时一次性创建,不再每次请求新建连接(省去约 0.8s/次的握手开销)
  • 消除冗余网络传输:原流程音频在网络上传输 4 次(上传→验证GET→handle_file下载→predict再上传),优化为保存临时文件后直接传给 predict,减少为 1 次
  • 异步不阻塞predict() 改用 run_in_executor 在线程池中执行,不再阻塞 asyncio 事件循环,提升并发能力
  • 新增耗时日志:每步记录用时,便于定位性能瓶颈

测试结果

优化后实测耗时(远端 Gradio 推理时间不可控):

音频大小 总耗时
~47KB 短语音 1.36s
~67KB 中等语音 1.69s
~233KB 长语音 1.83s
~458KB 长段语音 2.18s

- 端口绑定 127.0.0.1,镜像源改为官方 ghcr.io
- Dockerfile 添加非 root 用户
- 添加 25MB 文件大小限制,修复裸 except,收紧 CORS
- 复用 Gradio Client,消除冗余网络传输
- predict() 改用 run_in_executor 避免阻塞事件循环
- 新增耗时日志
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant