2013-12-12 62 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