gpt4 book ai didi

google-app-engine - GAE 关闭或重新启动服务/应用程序的所有事件实例

转载 作者:行者123 更新时间:2023-12-04 03:10:57 26 4
gpt4 key购买 nike

在我的应用程序(Google App Engine 标准 Python 2.7)中,我在全局变量中有一些标志,这些标志在实例启动时(在第一次请求时)被初始化(从内存缓存/数据存储读取值)。该变量值不经常更改,仅每月一次或在紧急情况下(即当谷歌应用程序引擎 Taskqueue 或 Memcache 服务运行不正常时,每年发生的次数不超过 GC Status 报告的两次,但严重影响了我的应用程序和我的客户:https://status.cloud.google.com/incident/appengine/15024 https://status.cloud.google.com/incident/appengine/17003 )。

为了提高效率和成本,我不想将这些标志存储在内存缓存或数据存储中。

我正在寻找一种向所有实例发送消息的方法(请参阅我之前的帖子 GAE send requests to all active instances):

https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed 中所述

Note: Targeting an instance is not supported in services that are configured for auto scaling or basic scaling. The instance ID must be an integer in the range from 0, up to the total number of instances running. Regardless of your scaling type or instance class, it is not possible to send a request to a specific instance without targeting a service or version within that instance.

但另一种解决方案可能是:

1) 向我的应用程序或服务的所有实例发送关闭消息/命令

2) 向我的应用程序或服务的所有实例发送重启消息/命令

我只使用自动缩放,所以我无法发送针对特定实例的请求(我可以使用 GAE 管理 API 获取事件实例列表)。

有什么方法可以在 Python GAE 中以编程方式执行此操作吗?在 GCP 控制台中手动执行此操作在有几个实例时很容易,但对于 50 多个实例来说这很痛苦...

最佳答案

受您对相关帖子评论的启发,一种可能的解决方案(实际上更像是一种解决方法)是通过重新部署相同版本的应用程序代码来重新启动所有实例。

自动部署也可以使用 Google App Engine Admin API , 请参阅 Deploying Your Apps with the Admin API :

To deploy a version of your app with the Admin API:

  1. Upload your app's resources to Google Cloud Storage.
  2. Create a configuration file that defines your deployment.
  3. Create and send the HTTP request for deploying your app.

应该注意的是,(重新)部署处理 100% 流量的应用程序版本可能会由于以下原因导致错误和流量损失:

  • 覆盖实际正在使用的应用程序文件(参见 Deploying an app 中的注释)
  • 没有给 GAE 足够的时间来足够快地启动足够多的实例来处理高收入流量(更多详情 here)

使用不同的应用版本进行部署并逐渐将流量迁移到新部署的应用可以完全消除这种损失。这可能与您的特定情况无关,因为旧的应用程序版本已经受损。

自动化流量迁移也是可能的,参见 Migrating and Splitting Traffic with the Admin API .

关于google-app-engine - GAE 关闭或重新启动服务/应用程序的所有事件实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com