2013-05-30 48 views
2

我有一個Django項目與幾個應用程序。我的項目現在已經到了需要API的地步。我打算在使用tastypie的不同服務器上使用API​​。但是,API將使用與網站相同的模型。帶有Tastypie接口的Django站點是否需要兩個代碼庫?

到目前爲止,我看到我唯一的選擇是如下...

複製應用到這意味着我必須使用同一模型兩個應用程序,現在必須保持兩個代碼庫---糟糕的服務器!

那麼,其他如何處理呢?我有什麼選擇?

我的模型可以以某種方式共享嗎?

+0

你可以把模型放到一個單獨的項目中,讓這兩個應用程序將它用作庫或使用類似git子模塊的東西。或者,將兩個項目的Web部件的代碼放在一起,只處理在配置中運行的內容,但這聽起來有點難看。 – millimoose

回答

2

我不會推薦拆分你的項目。

每次您編輯模型時,都必須立即對其進行編輯,否則可能會導致事物不同步。相反,這會變得非常痛苦,

服務器是瓶頸嗎?拆分網站和api機器(但使用相同的models.py)並將連接共享到某處的數據庫。

DB是瓶頸嗎?將數據庫擴展到更快的機器/羣集,並使用相同的站點來提供web和api。

無論哪種方式,一個代碼庫,一組模型,一個DB!

+0

一個'拆分網站和api機器'?舉個例子? – GrantU

3
  1. 對於這個有意義,您可能需要連接到同一個數據庫
  2. 爲什麼你會需要兩個代碼庫?你有一個單一的代碼庫的兩個副本。
+0

是的,我連接到同一個數據庫,並有相同的模型等一臺服務器將是我的網站和另一個API。 – GrantU

+0

我不希望真的是相同的應用程序,但在兩個服務器上的應用程序中使用相同的模型,即我的網站和API – GrantU

+0

在一個項目中,您可以有許多應用程序,在服務器中可以有許多應用程序,數據庫和設置。任何python文件都可以附加到服務器中的任何進程的python路徑,所以再次嘗試解決什麼問題? –

1

爲什麼不在同一臺服務器上運行不同的端口上的api?這將爲您節省很多開始的問題。跨服務器共享數據庫連接可能需要您考慮安全性。

此外,如果您在不同的項目中重複使用相同的應用程序,您可能需要打包並版本化您的應用程序以獲得舒適。想想你正在努力解決的真正問題,並始終牢記在心。對於每一個問題都有很多解決方案,找到合適的解決方案是有幫助的。

+0

我想分成兩個服務器網站和API,它們沒有相同的應用程序,但需要相同的模型,如果你明白我的意思。 – GrantU

+0

也許我應該說我想重複使用我的模型從api的應用程序作爲其相同的數據庫和模型等 – GrantU

相關問題