我有一个包含多个应用程序的 Django 项目。我的项目现在已经到了需要 API 的地步。我打算使用tastepie 将API 放在不同的服务器上。但是,API 将使用与网站相同的模型。
到目前为止,我看到我唯一的选择如下......
将应用程序复制到服务器,这意味着我有两个应用程序使用相同的模型,现在必须维护两个代码库 --- 糟糕!
那么,其他人如何处理呢?我有什么选择?
我的模型可以以某种方式共享吗?
我有一个包含多个应用程序的 Django 项目。我的项目现在已经到了需要 API 的地步。我打算使用tastepie 将API 放在不同的服务器上。但是,API 将使用与网站相同的模型。
到目前为止,我看到我唯一的选择如下......
将应用程序复制到服务器,这意味着我有两个应用程序使用相同的模型,现在必须维护两个代码库 --- 糟糕!
那么,其他人如何处理呢?我有什么选择?
我的模型可以以某种方式共享吗?
我不建议像这样拆分您的项目。
每次编辑模型时,您都必须立即对其进行编辑,否则可能会出现不同步的风险。相反,这将变得非常非常痛苦;
服务器是瓶颈吗?拆分站点和 api 机器(但使用相同的models.py
)并在某处共享与数据库的连接。
数据库是瓶颈吗?将数据库扩展到更快的机器/集群并使用相同的站点来提供 web 和 api。
无论哪种方式,一个代码库,一组模型,一个数据库!
将您的应用程序与模型放在单独的存储库中,然后使用git-submodule
.
为什么不在同一服务器上的不同端口上运行 api?这将为您节省很多问题。跨服务器共享数据库连接可能需要您大量考虑安全性。
此外,如果您在不同的项目中重用相同的应用程序,您可能需要打包和版本化您的应用程序以方便使用。想想你要解决的真正问题,并始终牢记这一点。每个问题都有很多解决方案,找到正确的解决方案会有所作为。