python - 使用微服务运行 Google App Engine 应用程序

标签 python google-app-engine publish-subscribe microservices

我有一个大型整体式应用程序,现在是时候将一些模块分离为微服务了! 我在 Google 文档中阅读了很多关于发布/订阅和微服务的内容,但找不到我的问题的答案:

  1. 我的模块(微服务)的 app.yaml 文件是什么样的?
  2. 我的应用程序的 app.yaml 看起来如何?(我的意思是,使用微服务)
  3. 我需要在哪里声明此模块 - 在应用程序 app.yaml 中还是在两个 app.yaml 中?
  4. 如何将单个数据存储用于我的应用和模块?

我的 app.yaml 现在看起来像:

application: my-application
version: 1
runtime: python27
api_version: 1
threadsafe: true

使用一些凭据和库。

等待您的回答!

最佳答案

单体应用实际上是具有单个模块/服务(默认)的应用。 app.yaml此类应用程序的配置(如您显示的那样)实际上是默认模块的配置文件 - 没有“每个应用程序”这样的配置。这些模块通过各自的 <module>.yaml 中的这一行“绑定(bind)”到一个特定的应用程序中:

application: <app_identifier>

在多模块应用程序中,每个模块都有自己的 <module>.yaml配置文件(名称不必是 app.yaml ,如果模块代码共享相同的目录,它实际上必须不同 - 但我会坚持推荐的目录结构 - 每个应用程序子目录一个模块)。

请参阅此问答(其中还包含一些示例):Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?

可以/不应该设置默认模块名称。所有其他模块名称均在相应的 <module>.yaml 中配置文件,像这样:

module: <module_name>

同一个应用程序中的所有模块共享同一个数据存储(因此同一个 index.html 文件)。

请注意,其他配置文件也是应用程序级别的配置,因此实际上由所有模块共享(或者只是默认模块,例如执行 cron 服务的模块),我会按照建议将它们放在应用程序的顶级目录:cron.yaml , dispatch.yaml , queue.yaml .

关于python - 使用微服务运行 Google App Engine 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125926/

相关文章:

google-app-engine - 将 Godaddy 的 SSL 证书添加到 Google App Engine

python - 为什么这个指令不起作用?

java - 如何在Google AppEngine中使用OAuth2调用java中的API

java - N 层发布/订阅者设计问题

Redis Pub/Sub 当 sub 是自动缩放组的一部分时

c++ - 给定一个 DDS 主题名称,是否可以在运行时确定主题类型信息?

python - 包含空值列的 MySQL 查询

python - einsum 和距离计算

python - 使用 selenium 从 Highcharts 抓取数据

python - 为什么不将 if __name__ == '__main__' 放在模块的开头?