【问题标题】:Integrate Django with others not web systems in python在 python 中将 Django 与其他非 Web 系统集成
【发布时间】: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


    【解决方案1】:

    听起来 Django/Celery 组合可以满足您的要求(除了说您不想使用 Django 的那个)。

    • Django 为您提供了在命令行之外创建custom actions 的能力。
    • Django 为您提供 Web 界面。
    • Celery 允许您异步进行硬计算。
    • 您将能够使用 Django ORM,因此您没有多个模型定义。

    【讨论】:

      猜你喜欢
      • 2021-01-06
      • 2010-10-16
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多