fastapi 如何优雅的不停服务更新

193 天前
 AuYuHui

各位大佬,现在项目是使用 nohup 来启动的,每次更新时 都要拉新代码,重启。

问了 GPT 可以用 Gunicorn 方式不停服务更新

这种有没有坑呢??

1489 次点击
所在节点    问与答
4 条回复
gaobh
193 天前
负载均衡也行,更新的时候路由到其他节点上
so1n
193 天前
gunicorn 就支持不停服务更新,他再有坑也没有你的 nohup 多...
dcsuibian
193 天前
Nginx+蓝绿部署就行了
简单来说就是你原来的进程不停,新起一个进程,更新 Nginx 配置文件,nginx -s reload 就行。如果当前有请求正在处理的话,Nginx 会维持旧的连接,但是会把新的请求导向新的地方。
具体来说:现在旧的服务的端口是 9527 ,新的是 9528 。在/etc/nginx/conf.d/中有两个文件,9527.conf 和 9528.conf.bak ,分别导向两个服务。只要重命名一下文件,然后 reload nginx 就行。下次再需要更新就反过来。

其实基本原理都差不多,k8s 也是类似的做法。

问题也是有的,首先有状态服务(数据库)还是不能随便变的。
其次就是长连接还是有问题,比如 WebSocket 。所以最好不要一更新完就把旧的给 kill 了。
w292614191
192 天前
借楼问问 docker 怎么弄,先跑一个新的容器?然后等一会 stop 旧的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1115302

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX