【问题标题】:Zero Downtime Code Update for Django AppDjango 应用程序的零停机代码更新
【发布时间】:2017-05-22 09:26:13
【问题描述】:

正在使用的东西:

  1. 运行 uwsgi 的主管
  2. uwsgi 启动我的基于 Django 非 rel 1.6 的 ML 应用程序(正在进行 Django 升级)

我正在使用 Uwsgi 启动基于 Django ML 的应用程序。 但不知何故,由于它必须加载大量二进制文件进行初始化,主管重新启动并加载新代码大约需要 20-30 秒。

我怎样才能减少这个时间? 或者有没有其他方法可以运行 Django 应用程序以便在代码更改时快速重新加载?零停机时间?因为如果 Nginx 无法连接到 Django,它将开始抛出 5xx。

【问题讨论】:

  • 您的问题暗示了其他要求,而不仅仅是代码重新加载。零停机时间不存在。为了减少停机时间,必须采用特殊的系统架构。它们的复杂性随着停机风险的降低而增加。对于单个 Django 实例,您无能为力。作为初学者,您将需要多个运行故障转移场景的 Django 实例。 nginx 为此提供了有限的功能。但实际上你的问题既不是关于编程,也不是这里有任何简单的解决方案可以作为答案给出。
  • @KlausD。谢谢。但我们已经为我们的一个项目这样做了。我完全同意你的看法。这不是一个关键的环境,我们会付出如此多的努力来建立它。有没有一种方法可以使用 run python manage.py runserver 来保持应用程序正常运行,并且它知道代码已更改并开始提供新代码? python manage.py runserver 确实检测到代码更改,但我想知道它是否会检测到安装的新要求?

标签: python django


【解决方案1】:

您可以使用蓝绿部署方法。 在这种方法中,有两个相同的服务器:一个是Blue,另一个是Green。 在任何时候,只有一个环境是实时的,实时环境服务于所有生产流量。当您准备软件的新版本时,您将在绿色环境中进行最后阶段的测试。一旦软件在绿色环境中运行,您切换路由器,以便所有传入请求都进入绿色环境 - 蓝色的现在空闲。

【讨论】:

  • 谢谢。但我们已经为我们的一个项目这样做了。这不是一个关键的环境,我们会付出如此多的努力来建立它。有没有一种方法可以使用 run python manage.py runserver 来保持应用程序正常运行,并且它知道代码已更改并开始提供新代码? python manage.py runserver 确实检测到代码更改,但我想知道它是否会检测到安装的新要求?
  • 不,@RanvijayJamwal 我不知道。如果你找到了,请添加这个问题的答案。
  • 好的。我一定会的。
猜你喜欢
  • 1970-01-01
  • 2011-05-26
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多