在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()

检查admin-api端点

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

如果由于某种原因这不起作用,你也可以部署多个版本的应用程序,使用不同的实例/缩放设置,并通过编程方式切换它们


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

这可能不是你想要的,但这是实现你想要的一种可能的方法。

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

想法吗?这对你来说是一个可能的解决方案吗?

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

相关内容

  • 没有找到相关文章

最新更新