Jim*_*mmy 12 python architecture memory django
我正在尝试运行大量共享约90%代码的网站.它们只是用于查询API并返回结果.他们将拥有一个通用的用户群/数据库,但配置略有不同,并且将具有不同的CSS(甚至可能是不同的模板).
我的初衷是将它们作为具有公共库的单独应用程序运行,但我已经阅读了有关它们可以从单个django实例运行的站点框架,这可能有助于减少内存使用.
https://docs.djangoproject.com/en/dev/ref/contrib/sites/
我的问题是,站点框架是否是解决此类问题的正确方法,并且它在运行单独的应用程序方面具有真正的好处.最初我以为是,但不是我想的.我听说过以下内容:
您的SITE_ID在settings.py中设置,因此为了拥有多个站点,您需要多个settings.py配置,这意味着多个不同的进程/实例.您当然可以在它们之间共享代码库,但每个站点都需要一个专用的worker/WSGIDaemon来为该站点提供服务.
如果每个站点都需要运行UWSGI实例,这有效地消除了在一个引擎盖下运行多个站点的任何好处.
系统的其他想法:
我不知道采取什么途径.
恕我直言,这取决于可能发生的变化程度、影响是什么以及发生的可能性有多大。例如:
他们将有一个共同的用户库/数据库
您是说同一个人使用所有网站吗?如果是这样,那么风险状况将比不同的人(例如不同的组织)更严重。基本上(通过良好的适当架构)您希望将事物解耦,以便当一件事发生变化时,它不会对其他一切产生巨大影响。
如果您运行同一个实例,那么很容易一次更新每个站点(假设您需要在基本系统上执行维护补丁),但另一方面,这可能会困扰您(一组用户很高兴拥有更改,但其他未更改 - 要么是因为功能更改,要么是因为应用补丁所需的停机时间(例如)。
在不同的实例中运行相同的代码库会产生更大的维护开销,但消除了与管理变更相关的大量风险;然后,对话就变成了如何最有效地维护同一事物的多个实例,而不是映射与每次更改相关的风险。