首页 > 解决方案 > 如何运行 Django 应用程序的多个实例?

问题描述

这个问题不涉及任何代码。我只想知道一种运行 django 应用程序的多个实例的方法,以及它是否真的可行。

我制作 django 应用程序并将它们托管在 Apache 上。在使用这些应用程序时,我注意到访问 Web 应用程序的多个用户之间存在冲突。

让我们假设它是一个网络抓取应用程序。如果一个用户访问该应用程序并运行抓取工具,则从不同位置访问该站点的另一个用户似乎无法访问该应用程序或运行抓取工具,除非第一个用户开始的抓取完成。

是否真的可以使其独立于访问该应用程序的所有不同用户?

标签: djangopython-3.x

解决方案


有几种方法可以解决这个问题。您可以考虑将您的应用程序放入容器中(Google 搜索:docker {your stack})

然后实现 Docker Swarm 或 Kubernetes 之类的东西来分配应用程序的多个实例。

话虽如此,您可能会考虑如何重构您的应用程序以允许多个用户。听起来你的抓取过程会锁定东西。但实际上,您的服务器没有理由在此期间锁定。

创建您的应用程序可能会更好,以便当它收到请求时,例如有人访问该站点,服务器会支付所请求的网页。当用户要求运行抓取/任务时,服务器会异步调用您的 scaper 服务或脚本。

这样,您的应用程序在抓取过程中仍然可以运行。这将比启动整个应用程序的数十或数百个实例更节省资源(并且可能更简单)。

tl;Dr:多实例容器化重构应用程序,使单个用户无法对其进行线程锁定。


推荐阅读