我的应用程序是用 Flask 开发的,并使用 buildout 来处理依赖隔离。我打算用 Gunicorn 和 supervisord 作为 wsgi 容器和进程管理器,前面有 Nginx 做负载均衡。这是部署新版本应用程序时的问题:所有内容都构建在子文件夹中,如何重新启动 gunicorn 服务器以便可以优雅地进行版本切换?
我当然想出了一些解决方案:
抛弃 gunicorn 和 superviosrd,转而使用 apache mod_wsgi,因此在部署新版本时,我只需更改 .wsgi 文件中的文件夹,服务器就会重新启动。
使用 virtualenv 并在其中安装 gunicorn、supervisord 以及我的应用程序包,因此在切换版本时我只需使用 supervisorctl 重新启动它。
有没有一种“纯粹的”构建方式可以完成这种情况?或者任何正在使用的生产解决方案都将受到赞赏。
提前致谢。