在一个项目中如果有前台系统和后台系统, 我的文件结构如下:
-总目录: -后台系统文件夹: -model 文件夹(存放数据模型) -view 文件夹(存放视图文件) -前台系统文件夹: -model 文件夹(存放数据模型) -view 文件夹(存放视图文件) -后台系统启动文件.py -前台系统启动文件.py
在后台系统中会对前台系统中的数据进行增删改查,在后台系统中直接导入使用前台系统中的 model 是会报错的, 然后我选择在后台系统中继承前台系统中的 model,然后再进行增删改查的操作,但是这种方法会触发 mysql 的事务操作,最终导致连接池溢出, 所以想请教大家,这种情况下的 flask 项目,大家是如何处理结构的啊?
1 renmu 2019-11-13 15:44:38 +08:00 via Android 你在前台定义接口后给后台用,不要直接操作数据库(尽快前后端分离吧 |
![]() | 3 Latin 2019-11-13 16:02:03 +08:00 https://sm.ms/image/oYPrtqfEn2MKIOy 我还是选择黏在一起 |
![]() | 4 ipwx 2019-11-13 16:07:04 +08:00 你程序可以一个软件包写完,方便互相引用。但是你前后台系统完全可以启动两个进程或者 uwsgi host 呀~ 这有啥困难的。然后 nginx 做一下 dispatch 不就行了。 如果前台系统要向后台系统插任务,就再上 celery 框架呀,然后队列就变成了第三个进程。 |
5 anaf 2019-11-13 16:12:57 +08:00 楼上才是正常的目录 !↑ |
![]() | 6 Vegetable 2019-11-13 16:15:23 +08:00 我这里前台后台是共用一套 model 的,而不是定义在两个地方. 后台存在的意义难道不是管理前台的 model 吗?这个分开我觉得不太合理 |
![]() | 7 huijiewei 2019-11-13 16:26:22 +08:00 --core --modules ----backend ----frontend |
![]() | 8 whoosy 2019-11-13 16:40:11 +08:00 @Latin 咱们是不是一个公司的?  |
![]() | 9 kayseen OP @Vegetable 麻烦问一下你的结构,是不是下面这样的: ``` -总目录: -后台系统文件夹: -view 文件夹(存放视图文件) -前台系统文件夹: -view 文件夹(存放视图文件) -model 文件夹(存放数据模型) -后台系统启动文件.py -前台系统启动文件.py ``` |
![]() | 10 yunchuanwu 2019-11-13 16:54:58 +08:00 一个库的话应该用一个 models.py 解决的,migration 也好做 可以用 SQLAlchemy |
![]() | 12 kayseen OP |
![]() | 13 hp66722667 2019-11-14 09:50:57 +08:00 @Vegetable 前台与后台公用同一个 model 不好吧,例如模型里面有些字段后台需要显示,前台却不能显示岂不是很麻烦 |
![]() | 14 kayseen OP @hp66722667 我选择的是继承 model,然后重写方法 |
![]() | 15 hp66722667 2019-11-26 14:07:56 +08:00 @kayseen 直接分开的不就完了么,本来前后台的 model 方法也很大不同 |