python - Django 上的多个站点

标签 python django memory architecture

我正在尝试运行大量共享大约 90% 代码的网站。它们只是为了查询 API 并返回结果而设计的。它们将有一个共同的用户群/数据库,但配置会略有不同,并且会有不同的 CSS(甚至可能是不同的模板)。

我最初的想法是将它们作为具有公共(public)库的单独应用程序运行,但我已经阅读了有关站点框架的信息,该框架允许它们从 django 的单个实例运行,这可能有助于减少内存使用。

https://docs.djangoproject.com/en/dev/ref/contrib/sites/

我的问题是,站点框架是否是解决此类问题的正确方法,它是否比运行单独的应用程序具有真正的好处。起初我认为是,但我不这么认为。我听说过:

Your SITE_ID is set in settings.py, so in order to have multiple sites, you need multiple settings.py configurations, which means multiple distinct processes/instances. You can of course share the code base between them, but each site will need a dedicated worker / WSGIDaemon to serve the site.

如果每个站点都需要运行一个 UWSGI 实例,这将有效地消除在一个引擎盖下运行多个站点的任何好处。

系统的另类想法:

我不知道该采取什么路线。

最佳答案

恕我直言,这归结为可能发生的变化程度、影响是什么以及发生的可能性有多大。例如:

They will have a common userbase / database

您是说同一个人使用所有网站吗?如果是这样,那么风险状况将没有不同的人(比如不同的组织)那么严重。基本上(通过良好的适当架构)您希望将事物解耦,以便当一件事发生变化时,它不会对其他一切产生巨大影响。

如果您在同一个实例上运行,那么一次更新每个站点很容易(比如您需要在基本系统上执行维护补丁),但另一方面可能会咬到您(一组用户很高兴进行更改,但其他人没有 - 因为功能更改或应用补丁所需的停机时间(例如)。

在不同的实例中运行相同的代码库会带来更大的维护开销,但会消除与管理变更相关的大量风险;然后,对话就变成了如何最有效地维护同一事物的许多实例,而不是在每次进行更改时映射相关的风险。

关于python - Django 上的多个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845883/

相关文章:

python - PyQt4中PYSIGNAL定义了什么模块

sql - Postgresql按乱序排序

python - 将多个 graphml 文件与 networkx 合并并删除重复项

python - Django Rest Framework-有效地检索反向外键的相关字段

python - Django 1.11 :Apps aren't loaded yet

java - 强制 Windows 交换应用程序

node.js - 超出 Google Cloud Functions 内存限制

memory - Redis - 监控内存使用情况

python - 为什么我们需要在 surface.blit() 之后进行 display.update() 操作?

python - 比 numpy 的 in1d 掩码函数 : ordered arrays? 做得更好