将更新部署到Flask应用程序

时间:2018-03-02 14:43:46

标签: python flask web-deployment

我正在寻找高层次的洞察力,因为有人来自PHP生态系统。将更新部署到单个服务器(无负载平衡节点)上的实时Flask应用程序的常见方法是什么,由一些WSGI(如Gungin在Nginx后面)提供服务?

具体来说,当您将更新从git存储库或rsync文件提取到服务器时,我假设这会留下一个小窗口,当应用程序的文件发生变化时,请求可以通过该窗口。

我主要部署了Laravel应用程序用于生产,因此要防止这种情况,请使用php artisan up在文件复制时启动维护页面,并@Override public void onStartup(ServletContext servletContext) throws ServletException { WebApplicationContext rootAppContext = createRootApplicationContext(servletContext); if (rootAppContext != null) { servletContext.addListener(new RequestContextListener()); } else { logger.debug("No ContextLoaderListener registered"); } } 在完成所有操作后将网站重新启动

与Flask相同的是什么,还是有其他方法可以解决这个问题(Nginx配置)?

由于

1 个答案:

答案 0 :(得分:0)

看起来Docker可能是我最好的选择:

  1. 让Nginx在主机上运行,​​应用程序在Gunicorn的容器A中运行。 Nginx将流量定向到容器A。
  2. 在开始文件同步之前,拆除容器A并启动容器B,容器B侦听同一本地端口。容器B可以是维护页面或应用程序的副本。
  3. 启动文件同步并等待它完成。完成后,拆下容器B,再次启动容器A.