Kri*_*ian 5 python google-app-engine app-engine-ndb google-cloud-datastore gae-module
我有一个应用程序分为 5 个模块(参见我美丽的 ascii 艺术)每个模块都有自己的目录,就像这个结构一样
AppEngine App <--Here's the dispatch.yaml
---------------------
| | | | |
| | | | |
Mod1 Mod2 Mod3 Mod4 Mod5
^ ^
\__Here's the models |__ Here i wanna read the models
.py file
with the __init__.py
Run Code Online (Sandbox Code Playgroud)
NDB 模型在一个模块中定义(例如 mod1),我想读取 Mod5 中的一些数据,官方文档说这是可能的,但我做不到。我以这种方式导入模型
#this is in mod5 py file
import Mod1.models # No module named Mod1.models
from Path.Mod1 import models #No module named Path.Mod1
from Mod1 import models #No module named Mod1
from Mod1.models import specific_model #No module named Mod1.models
from Path.models import specific_model #No module named Path.models
Run Code Online (Sandbox Code Playgroud)
我将 --storage_path 设置更改为每个模块,以便能够在启动器中同时运行所有模块,我认为这可能是问题所在。但是,如果我离开同一目录,如何同时运行所有模块(我收到“OperationalError:数据库已锁定”错误)这里有任何线索吗?
我找到了一个答案,虽然不理想,但有效。
如果我克隆(又名复制粘贴)Mod5 文件夹中的 models.py 文件并删除 --storage_path 设置(数据库在开发服务器中的同一临时文件夹中共享),我可以读取存储的数据。
显然,模型需要在每次更改中同步,但至少我可以在代码中前进
目录结构如下:
-- Main (with the dispatch.yaml)
|__ Mod1
| |__ model.py
| |__ app.yaml
| |__ specificMod1Code.py
| |______ Templates
| |______ js
| |______ css
| |______ img
:
:
:
|__ Mod5
|__ model.py #equal that mod1
|__ app.yaml #with the mod5 instace and stuff
|__ specificMod5Code.py
|______ Templates
|______ js
|______ css
|______ img
Run Code Online (Sandbox Code Playgroud)
要同时运行所有模块,需要在应用程序的根目录中运行 dev_appserver 命令(源代码)
python dev_appserver.py mod1\app.yaml mod2\app.yaml mod3\app.yaml mod4\app.yaml mod5\app.yaml
Run Code Online (Sandbox Code Playgroud)
在此 URL 中运行
Mod1=> 本地主机:8080
Mod2=> 本地主机:8081
Mod3=> 本地主机:8082
Mod4=> 本地主机:8083
Mod5=> 本地主机:8084
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |