基于健康码识别的 FastAPI 同步和异步函数的基准测试
健康码识别服务使用了 FastAPI 进行开发的,本周主要工作是为了对健康码识别的服务进行性能调优。接口函数使用了 async 关键字,但是内部的实现并没有使用 await。由于改写成异步代码需要时间,这里并没有改写代码,只是删除了 async 关键字。部署服务使用了 uvicorn 和 gunicorn+uvicorn 两种方法。
基准测试工具使用的是 ab
测试流程
生成测试数据
准备测试图片 health.jpg
echo -n '{"base64": "' > health.json
base64 -w0 health.jpg >> health.json
echo -n '"}' >> health.json
部署服务
uvicorn
docker run --runtime=nvidia --rm -it -e NVIDIA_VISIBLE_DEVICES=2 -p 20001:8000 \
-v $(pwd):/health_code_service --name=health-uvicorn health-code-service \
uvicorn controller:app --host 0.0.0.0 --workers 1
- workers 并发进程数