【问题标题】:Change backend instance class programmatically on Google App Engine在 Google App Engine 上以编程方式更改后端实例类
【发布时间】:2016-09-14 10:33:01
【问题描述】:

我正在为 Google App Engine 项目使用后端实例。 (前端实例无法处理超过 60 秒的请求——我需要更长的时间。)

我选择 B4 实例类型是因为有时负载很高。然而,在某些时候(比如凌晨 2 点到 7 点),负载非常低,以至于拥有 B4 实例是多余的。

我想做一个 cron 作业,在某些时候将该实例的类型更改为 B2,在其他时间更改回 B4 以节省成本。

但是,看着Modules API,我找不到这样做的方法。

那我该怎么做呢?

在得到 Ramiel 的答复后进行编辑

最后我使用了如下的Admin API:

# Construct the api client
cred = GoogleCredentials.get_application_default()
svc = discovery.build('appengine', 'v1', credentials=cred)
vapi = svc.apps().services().versions()

# get list of versions
o = vapi.list(appsId=app_identity.get_application_id(), servicesId=modules.get_current_module_name()).execute()

# PATCH all SERVING versions with the new instanceClass
for v in o['versions']:
    if v['servingStatus'] == 'SERVING':
        result = vapi.patch(
            appsId=app_identity.get_application_id(),
            servicesId=modules.get_current_module_name(),
            versionsId=v['id'],
            updateMask='instanceClass',
            body={
                'instanceClass': instanceClass
            }
        ).execute()

【问题讨论】:

    标签: google-app-engine gae-module gae-backends


    【解决方案1】:

    结帐 admin-api 端点

    https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions/patch

    如果由于某种原因这不起作用,您还可以使用各种实例/缩放设置部署多个版本的应用程序并以编程方式切换它们 带有来自Modules API的 start_version


    顺便说一句,如果您切换到手动缩放,则没有 60 秒的限制

    【讨论】:

    • 这正是我所需要的!谢谢!
    【解决方案2】:

    这可能不是您想要的,但它是实现您想要的一种可能的方式。

    在容器引擎或类似系统上设置系统,自动从您的存储库中提取最新代码、自动调整实例类型并自动进行重新部署。您可以让它在不同的时间部署不同的实例类型。实例类的每次更改都需要重新部署,但理论上这些可以完全自动化,因此这是可能的。

    想过吗?这对您来说是一个可行的解决方案吗?

    【讨论】:

      【解决方案3】:

      任务队列可以运行 10 分钟,查看document

      【讨论】:

        猜你喜欢
        • 2012-08-06
        • 2023-03-14
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 2015-07-01
        • 2017-07-26
        • 2018-04-03
        • 1970-01-01
        相关资源
        最近更新 更多