在Google App Engine

时间:2016-09-14 10:33:01

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

我正在使用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()

3 个答案:

答案 0 :(得分:3)

结帐admin-api端点

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

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

的start_version 顺便说一下,如果你切换到手动缩放,你不会有60秒的限制

答案 1 :(得分:0)

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

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

思想?这是一个可能的解决方案吗?

答案 2 :(得分:0)

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