【问题标题】:Communicating between google app engine services谷歌应用引擎服务之间的通信
【发布时间】:2017-07-14 10:48:47
【问题描述】:

我的项目结构如下所示,

.
├── app
│   ├── api
│   ├── models
│   ├── services
│   │   └── lib
|   |   |__ worker.yaml
|   |   |__ worker.py
|   |_ main.py
|_ app.yaml

我正在尝试从app 模块(即默认模块)中导入models worker.py 之类的,

from app.models import db

但它显示No module named app.models。但是我可以在main.py 中实现相同的功能。请注意,我正在运行app.yamlworker.yaml 文件。

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    部署后,GAE 服务/模块不共享其模块目录之外的任何内容,该目录是其.yaml 文件所在的目录。

    所以worker.py 不会看到services 目录上方的任何东西(worker.yaml 存在),因此它看不到models。但是main.py 可以,因为模型在其app 目录中(app.yaml 存在的地方)。

    如果你愿意,你可以在services 内符号链接models,请参阅Sharing entities between App Engine modules

    或者看看Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure? 了解我如何构建多模块应用程序的示例?

    【讨论】:

    • 所以在项目的根目录中为worker.yaml创建符号链接是可行的,对吧?我试过了,但仍然无法正常工作。
    • 不是一回事:您在 2 个不同的位置有 2 个 worker.yaml 文件。模棱两可的 wrt 确定模块的顶级目录。
    • 为什么您的服务结构不一致(一个在. 目录中,一个在./app/services 目录中?
    • 当我们通过 gcloud 部署我们的应用程序时,符号链接是否有效?
    • 符号链接在本地工作,只是想知道它是否可以通过 gcloud 进行部署。
    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 2023-04-04
    • 2012-03-22
    • 2010-11-18
    • 2013-02-07
    • 2013-07-05
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多