lixuda
V2EX  ›  Flask

如何优雅升级 Python web 程序

  •  
  •   lixuda · Aug 10, 2020 · 9298 views
    This topic created in 2281 days ago, the information mentioned may be changed or developed.

    小弟不才,所以求大神。

    之前是开源的 php 程序,如果代码升级,操作都是进入后台,打开关闭网站,然后 ftp 上传代码,再打开网站。 网站有一定数量的会员访问。

    后来自己用 flask 重写了代码, nginx+gunicorn+flask 部署,代码用 git 拉取, 现在更新网站方式: 代码用 git 拉取,然后 pstree -ap|grep gunicorn kill -HUP PID

    感觉很怪异,特来问问大家有什么好方式?谢谢

    Supplement 1  ·  Aug 11, 2020
    另外图方便,直接 nohup gunicorn 运行
    20 replies  •  2020-12-19 14:02:26 +08:00
    alasou
    alasou
    Aug 10, 2020
    1
    fabric
    singerll
    singerll
    Aug 10, 2020 via Android
    2
    docker 编排
    sidegem
    sidegem
    Aug 10, 2020
    3
    supervisor
    jenlors
    jenlors
    Aug 10, 2020
    4
    docker-compose 或者 supervisor
    bonfy
    bonfy
    Aug 10, 2020
    5
    看上去你需要的就是个 Jenkins

    当然再改个 docker 部署也行
    precisi0nux
    precisi0nux
    Aug 10, 2020 via iPhone
    6
    k8s
    qilishasha
    qilishasha
    Aug 10, 2020
    7
    我们的运维一般 nginx 做端口映射同时跑几套程序,切端口能达到毫秒级来达到更新的目的,但是 session 会掉(没有很完美的办法)。代码更新一般是 ssh 直接复制粘贴。
    wangyzj
    wangyzj
    Aug 10, 2020
    8
    照着 devops 流程走一遭
    helloliao
    helloliao
    Aug 10, 2020
    9
    alias
    sxfscool
    sxfscool
    Aug 10, 2020
    10
    @qilishasha redis token 不行么
    feiniu
    feiniu
    Aug 10, 2020
    11
    502 Bad Gateway

    打开你这个帖子 ,连续五次 502.。。。。。。。。。。。。。。
    no1xsyzy
    no1xsyzy
    Aug 10, 2020
    12
    @qilishasha #7 Flask 的 session 实现不是类似(还是就是?) jwt 么?
    我开发用的那个整个关掉再开也没掉 session
    no1xsyzy
    no1xsyzy
    Aug 10, 2020
    13
    总之需要个编配方式
    不通过手动,而是某个外层监控装置去监控它的运行
    systemd 不常用但也可以
    tomczhen
    tomczhen
    Aug 10, 2020 via Android
    14
    client side session 不会有问题,只要 session 密钥不变,flask 默认使用这种方式。server side session 如果只是内存 /文件保存,通过多个实例切换的话,就需要持久化到 db 。
    suchbear
    suchbear
    Aug 10, 2020
    15
    哈哈哈哈,跟我一样用 git 来更新
    simple2025
    simple2025
    Aug 10, 2020
    16
    ansible+supervisor
    lixuda
    lixuda
    OP
    Aug 11, 2020
    17
    @no1xsyzy 图简单方便 就用 nohup gunicorn
    no1xsyzy
    no1xsyzy
    Aug 11, 2020
    18
    @lixuda #17 你(为了图方便而)用了怪异的方式启动,那自然是怪异的更新方式
    不知道你在寻求什么?甚至这是否真的方便还两说。
    lixuda
    lixuda
    OP
    Aug 11, 2020
    19
    @no1xsyzy 打算用 systemd 试试看
    huichao
    huichao
    Dec 19, 2020
    20
    1. 用 python 写个 github (比如你用的是 GitHub,gitlab 也可以)的 webhook,用 fabric 写命令自动部署,用 Nginx 也可以做到无宕机
    2. 找个 serverless 的服务器,部署无宕机
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1658 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    ♥ Do have faith in what you're doing.