首页 > 解决方案 > 用于多个应用程序和数据库连接的烧瓶应用程序结构

问题描述

虽然是 Web 开发的初学者,但我目前一直在开发一个更大的 Flask 应用程序。

目前我正在使用下面显示的结构,但我想知道构建这样一个应用程序的最佳方法是什么,特别是关于不同的数据库连接(SQLAlchemy)。

与通常(并且非常有用)的 Flask 教程中显示的不同,我设想了一个由多个部分独立(子)应用程序组成的架构,每个应用程序也依赖于自己的数据库连接。此外,我不一定要在访问主网站时立即加载所有数据库,而只需要加载所需的子应用程序之一。

对于服务器和客户端之间的通信,我计划使用 REST API,并且我已经使用蓝图来分隔子应用程序。

该应用程序有一个统一的前端,子应用程序被简单地映射到不同的 URL 端点(例如 website.net/app1 和 website.net/app2)。

非常感谢任何有关构建此类应用程序的指导,谢谢!

当前应用结构:

    project/
├─ run.py
├─ webapp/
│  ├─ __init__.py
│  ├─ static/
│  ├─ templates/
│  ├─ app1/
│  │  ├─ data/
│  │  │  ├─ app1_database.py
│  │  │  ├─ app1_db_session.py
│  │  │  ├─ app1_modelbase.py
│  │  ├─ database/
│  │  ├─ services/
│  │  │  ├─ app1_services.py
│  │  ├─ templates/
│  │  │  ├─ app1/
│  │  │  │  ├─ app1.html
│  │  ├─ __init__.py
│  │  ├─ app1_forms.py
│  │  ├─ app1_views.py
│  ├─ app2/
│  │  ├─ data/
│  │  │  ├─ app2_database.py
│  │  │  ├─ app2_db_session.py
│  │  │  ├─ app2_modelbase.py
│  │  ├─ database/
│  │  ├─ services/
│  │  │  ├─ app2_services.py
│  │  ├─ templates/
│  │  │  ├─ app2/
│  │  │  │  ├─ app2.html
│  │  ├─ __init__.py
│  │  ├─ app2_forms.py
│  │  ├─ app2_views.py

标签: restflaskweb-applicationssqlalchemyweb-architecture

解决方案


当我们谈论模块和目录结构时,主要目标是以一种易于维护、调试和改进的方式编写应用程序。我认为,如果您在一个项目中有多个应用程序,最好将每个应用程序放在不同的服务器上。当我们想在单个应用程序中分离逻辑时,尤其是当我们计划在不同的应用程序中重用此逻辑时,我们通常使用蓝图。所以我们可以将单个蓝图复制粘贴到另一个项目中。例如身份验证蓝图。它可以在多个应用程序中相同。您没有显示应用程序的任何业务逻辑。所以很难说。考虑到业务逻辑,我通常将文件放入目录中。


推荐阅读