我有一个关于如何将Django与其他非面向Web的子系统集成的理论问题。我不知道是否有可能使用Django开发此类系统,或者是否还有其他最佳选择(另一个Web框架)。

我提出了一个可能的系统,其中包含此要求和我将要开发的结构。

例如:


非Web平台,其主要目的是在后台执行硬计算并将结果保存在DB中。
有两个用于在后台管理这些服务的界面:命令行界面和Web界面(使用Django或其他Web框架)


我对这种体系结构的想法如下:

project_dir
| --- __init__.py
| --- main_system (eg: calculus, task in background, daemons...)
_____| --- __init__.py
_____| --- modules of this subsystem
| --- data_and_persistence
_____| --- __init__.py
_____| --- models (ORMs, SQL, ad hoc solutions,...)
| --- common_modules
_____| --- __init__.py
_____| --- auxiliar common modules
| --- command_line_interface
_____| --- __init__.py
_____| --- command_line_interface_modules
| --- web_interface
_____| --- __init__.py
_____| --- django project here
| --- test
_____| --- __init__.py
_____| --- test of all susbsystems


有以下几层(概述):


持久层:管理数据库模型。
在两个接口和main_system之间共享的通用业务逻辑。
I / O子系统:后台任务,命令行界面和Web界面。


我发现此解决方案存在一些问题:


Django模块是硬耦合的,它们非常依赖于设置文件,环境路径...(例如:在main_system中使用django orm)。
我还没有找到测试整个平台的好方法。带有发现和鼻子的单元测试在创建用于测试的数据库时遇到问题。 django-nose取决于django(但是我需要测试独立于它的另一个系统)。有没有一种简单的命令即可执行所有单元和集成测试的好方法?


你会改变什么?你会怎么做?

问候

最佳答案

听起来Django / Celery的组合似乎可以满足您的要求(除非您不想使用Django)。


Django使您能够从命令行创建custom actions
Django为您提供了Web界面。
Celery允许您异步执行硬计算。
您将能够使用Django ORM,因此无需多个模型定义。

关于python - 将Django与其他非Web系统集成在python中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22880923/

10-12 07:11