hello 大家好我是Monday,今天给大家带来一篇fastApi项目部署的相关文章。
在上篇介绍了使用Uvicorn部署启动程序
一般情况下,我们在开发、调试过程中采用命令行启动用的是 uvicorn(当然小型服务也有例外),但是并没有提供进程的监控。
所以我在生产环境下,一般会使用进程管理器 gunicorn + uvicorn + nginx 来部署项目
1、Gunicorn:
Gunicorn 是成熟的,功能齐全的服务器,Uvicorn 内部包含有 Guicorn 的 workers 类,允许你运行 ASGI 应用程序,这些 workers 继承了所有 Uvicorn 高性能的特点,并且给你使用 Guicorn 来进行进程管理。
这样的话,你可能动态增加或减少进程数量,平滑地重启工作进程,或者升级服务器而无需停机。
在生产环境中,Guicorn 大概是最简单的方式来管理 Uvicorn 了,生产环境部署我们推荐使用 Guicorn 和 Uvicorn 的 worker 类:
1 | gunicorn example:app -w 4 -k uvicorn.workers.UvicornWorker |
2、安装gunicorn
1 | pip install gunicorn |
3.以配置文件方式启动应用
1 | import multiprocessing |
4、启动程序
1 | nohup gunicorn -c gunicorn.conf.py main:app -k uvicorn.workers.UvicornWorker |
注意:main.py的端口要和gunicorn绑定的端口一样。
1 | uvicorn.run(app='main:app', host="127.0.0.1", port=9088, reload=True, debug=True) |
查看gunicorn进程树:
1 | pstree -ap|grep gunicorn |
杀掉进程:
1 | kill -9 gunicorn的pid |
5、配置nginx,
1 | vim /etc/nginx/conf.d/fastapi_9008.conf |
配置文件如下:
1 | server { |
配置文件意思是:
1 | listen监听9008端口, |
然后保存,重启nginx。
1 | systemctl restart nginx |
nginx配置大文件上传
正常web程序post是对请求的body或者文件上传没有大小限制
这个发布部署是通过nginx反向代理,转发fastapi端口,来实现的,
因为nginx默认最大上传文件是1M,所以需要修改,否则大文件会报错Request too large 413 代码,
把上面的nginx的配置文件,修改成如下:
1 | server { |
参考学习链接:
nginx 更改配置client_max_body_size nginx.conf 修改默认限制上传附件大小
https://blog.csdn.net/z69183787/article/details/83070275
http请求的url或body或header有长度或大小的限制吗?
https://blog.csdn.net/kris_lh123/article/details/101062026
fastapi学习记录【十二】发布部署gunicorn+nginx
https://blog.csdn.net/wangluonanhai/article/details/124011178
FastAPI部署,docker 部署
https://blog.csdn.net/RoninYang/article/details/121128106
setproctitle:设置Python进程名称
https://www.missshi.cn/api/view/blog/5df835053b4ab21ff6000000
结束语:
今天的分享就到这里了,欢迎大家关注微信公众号”菜鸟童靴“