【发布时间】:2014-05-17 20:05:15
【问题描述】:
我有一个关于如何将 django 与其他不面向 Web 的子系统集成的理论问题。我不知道是否可以使用 django 开发此类系统,或者是否有另一个最佳替代方案(另一个 Web 框架)。
我提出了一个具有此要求的可能系统以及我将开发的结构。
例如:
- 一个非网络平台,其主要目的是在后台执行硬计算并将结果保存在数据库中。
- 两个界面用于在后台管理这些服务:命令行界面和 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(但我需要测试另一个独立于它的系统)。有没有一种使用简单命令执行所有单元和集成测试的好方法?
你会改变什么?你会怎么做?
问候
【问题讨论】:
标签: python django background integration daemon