2013-12-12 96 views
0

我在這裏有一個代碼組織的問題。我有一個Django項目。它坐落在服務器上,人們使用它,並收集數據。在某些時候,我需要分析一堆數據(我使用Scipy,numpy和matplotlib)。現在我正在使用Django數據庫作爲數據的單一存儲點。最佳做法:django + python analytics

現在,我的分析模塊坐鎮Django項目裏面,我連接到的現場服務器使用,獲得數據,並分析同一個數據庫/劇情/不管。但是分析模塊與Django項目真的是分開的(我應該將django項目部署到另一臺服務器上,分析模塊不會使用它)。它有不同的依賴關係。

那麼應該怎麼組織這個保持分離,但仍允許分析模塊訪問Django項目的所有組成部分?我希望他們擁有不同的虛擬環境(因爲我不希望分析模塊依賴項混淆django項目環境),並且生活在不同的git倉庫中。

現在:

(git repo DjangoThing) 
DjangoThing 
    MyDjangoProj 
     settings.py 
     wsgi.py 
     urls.py 
    --->analyze.py (this is dumb) 
     etc 
    MyDjangoApp1 
     models.py 
     etc 
    MyDjangoApp2 
     models.py 
     etc 

有什麼建議?

+0

呃...你的意思是,就像在同一個項目中不同的應用程序? – yuvi

回答

1

重要的一點是要記住Django應用程序在一天結束時只是python代碼,所以如果你想擁有不同的虛擬環境,你可以創建一個單獨的python包並手動處理所有的數據庫工作,無論是通過SQLalchemy,還是其他東西,還是原狗。如果您想要的Django應用程序中有代碼,並且您只需修改您的PYTHONPATH,以便知道Django項目的位置。但是,您還需要知道manage.py是如何在幕後工作的,因爲您的自定義應用程序不可避免地需要加載設置以及通過manage.py發生的所有其他不錯的事情。

所以,我們要做什麼呢?那麼,我只想按照上面評論員的說法,只需在您的Django回購庫中創建您的分析應用程序作爲新應用程序即可。但首先,您可以輕鬆克隆舊的回購協議,並將其稱爲「分析」,然後稱爲新分析。對於您的分析應用程序,調整您的requirements.txt文件,將分析應用程序添加到它,然後砰的一聲,您的工作分析應用程序用最少的努力即可完成,並且如果您想使用它,您仍然擁有不錯的django orm。你仍然可以擁有不同的虛擬世界,只是不要對你所處的位置感到困惑,否則你將處於一個充滿傷害和痛苦的世界。

你甚至可以得到看中了晚飯,並通過RESTful的API調用暴露你的分析作爲一項服務,如果你想!

+0

感謝您的建議!你會建議創建分析virtualenv,以便它引用django virtualenv(即將其網站包添加到PYTHONPATH)?試圖避免傷害和痛苦:) – andy

+0

世界@andy你只是想創建一個單獨的virtualenv並稱之爲別的東西(如env_analytics或東西),然後用這個來代替你的正常環境。你不想指向不同的venv,因爲這會對傾向造成問題。 –

+0

我想知道的是如何處理在django項目中添加依賴項的情況......並且需要在分析中使用它。手動將它添加到env_analytics?似乎應該有「乾淨」的方式來說依賴性=「django項目中的所有內容」加上「其他」。或者這是一個壞主意? – andy