Posted on:
Last modified:
安装 uvicorn[standard]
, 其中包含了 uvloop,性能更好一点。推荐使用 gunicorn + uvicorn
worker 的方式运行。
pip install uvicorn[standard]
pip install gunicorn[setproctitle]
在开发阶段可以单独使用 uvicorn 来做开发服务器,不需要使用 gunicorn。
uvicorn app:app \
--host 127.0.0.0 \
--port 3000 \
--reload \ # 自动重新加载
--reload-dir src \ # 重新加载监控的文件夹
--reload-delay 1 \ # 重新加载时间是 1s
uvicorn 虽然自带了 --workers
选项,但是并没有提供重新拉起进程等监控功能,所以还是建议
使用 gunicorn。
gunicorn 推荐的 worker 数量是系统的 cpu * 2 + 1,不过如果在 docker 或者 k8s 环境中,就要 适当调整了。
gunicorn app:app \
-b 127.0.0.1:3000 \ # bind 选项同时指定了监听的地址和端口
-n my_app \
-w 4 \
-k uvicorn.workers.UvicornWorker
nginx 配置
server {
listen 80;
server_name example.org;
access_log /var/log/nginx/example.log;
location /api {
proxy_redirect off;
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站