App引擎读取模块之间的DataStore数据

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:数据库已锁定”错误)这里有任何线索吗?

Kri*_*ian 1

我找到了一个答案,虽然不理想,但有效。

如果我克隆(又名复制粘贴)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