公司的 web 项目怎么实现热更新,不需要停服就能实现发版

2021-07-06 18:33:42 +08:00
 longmeier90
之前用户少都是公司内部人使用,随便新增一个什么功能,直接就是拉一下代码,重启 web 服务也没问题。最近公司使用的人多了以后,发现这种方式不太适用啦。
我就想有用什么方式改造一下能够实现热更新或者是发版不停服,让用户无感知发版。难道是启动两套服务,做个负载,一个一个的重启?没这样搞过,不知道这种模式会不会有什么坑之类的,或者有什么更好的实现方法没有。
各位大佬给个建议!```
5807 次点击
所在节点    Python
24 条回复
ClericPy
2021-07-07 14:17:01 +08:00
@abersheeran 是, 不过我很多时候懒得装 gunicorn, 所以自己 handle signal 然后外面用 systemd 守护, 或者直接用 uvicorn 自带的 reload. 就赌不会那么导致重启一刹那正好有个请求没接到...

gunicorn 的 HUP 信号算热重启么, 会有几率丢请求么. 非后端不确定有没有什么靠谱点的办法, 一开始以为 nginx 会在程序重启的时候帮我 hold 住结果直接给人返回了 502... 前东家除了 HUP 信号, 还有几个操作就是靠的 nginx upstream 的负载均衡, 每次重启服务一台一台重启让坏节点自动被另一个节点接管
abersheeran
2021-07-07 14:44:42 +08:00
@ClericPy https://github.com/index-py/index.py/blob/master/indexpy/cli.py#L206 我也比较懒,直接封装了 gunicorn 和 uvicorn 的操作,对外暴露的使用方式一致。我每次用的时候只要改 index-cli [uvicorn|gunicorn] ....... 中间的部分就可以无缝切换了。
ruanimal
2021-07-07 16:45:02 +08:00
@ClericPy 还是 lvs 靠谱点
YangWaleed
2021-07-07 19:51:18 +08:00
换 erlang 吧( doge

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

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

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

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

© 2021 V2EX