【发布时间】:2018-01-02 02:10:51
【问题描述】:
在我的应用程序(Google App Engine 标准 Python 2.7)中,我在全局变量中有一些标志,这些标志在实例启动时(在第一次请求时)被初始化(从 memcache/Datastore 读取值)。该变量值不会经常更改,每月仅更改一次或在紧急情况下(即当 google 应用程序引擎 Taskqueue 或 Memcache 服务无法正常运行时,如 GC 状态中报告的那样每年发生不超过两次,但严重影响了我的应用程序和我的客户:https://status.cloud.google.com/incident/appengine/15024https://status.cloud.google.com/incident/appengine/17003)。
出于效率和成本考虑,我不想将这些标志存储在 memcache 或 Datastore 中。
我正在寻找一种向所有实例发送消息的方法(请参阅我之前的帖子GAE send requests to all active instances):
如https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed中所述
注意:配置为自动扩展或基本扩展的服务不支持以实例为目标。实例 ID 必须是介于 0 到正在运行的实例总数之间的整数。无论您的扩展类型或实例类如何,如果不针对该实例中的服务或版本,就不可能向特定实例发送请求。
但另一种解决方案可能是:
1) 向我的应用或服务的所有实例发送关闭消息/命令
2) 向我的应用或服务的所有实例发送重启消息/命令
我只使用自动扩展,所以我无法发送针对特定实例的请求(我可以使用 GAE 管理 API 获取活动实例的列表)。
有没有办法在 Python GAE 中以编程方式执行此操作?在 GCP 控制台中手动执行此操作在有几个实例时很容易,但对于 50 多个实例,这很痛苦......
【问题讨论】:
标签: google-app-engine google-api google-app-engine-python