2

Google App Engine プロジェクトのバックエンド インスタンスを使用しています。(フロントエンド インスタンスは 60 秒を超えるリクエストを処理できません — もっと時間が必要です。)

負荷が高い場合があるため、B4 インスタンス タイプを選択しました。ただし、特定の時間帯 (たとえば、午前 2 時から午前 7 時まで) は負荷が非常に低いため、B4 インスタンスを使用するのは過剰です。

コストを節約するために、特定の時間にそのインスタンスのタイプを B2 に変更し、別の時間に B4 に戻す cron ジョブを作成したいと考えています。

しかし、Modules APIを見てみると、そうする方法が見つかりませんでした。

では、どうすればそうできますか?

ラミエルから回答を得た後に編集

最後に、次のように 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()
4

3 に答える 3

4

admin-api エンドポイントのチェックアウト

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

何らかの理由でこれが機能しない場合は、さまざまなインスタンス/スケーリング設定を使用してアプリの複数のバージョンをデプロイし、モジュール APIの start_version を使用してプログラムで切り替えることもできます


ところで、手動スケーリングに切り替えると、60 秒の制限はありません

于 2016-09-19T12:20:55.677 に答える
0

タスク キューは 10 分間実行できます。ドキュメントを確認してください

于 2016-09-19T20:20:14.513 に答える
0

これはあなたが探しているものではないかもしれませんが、あなたが望むものを達成するための可能な方法です.

リポジトリから最新のコードを自動的にプルし、インスタンス タイプを自動的に調整し、自動的に再デプロイを行うコンテナ エンジンなどにシステムをセットアップします。異なるインスタンス タイプを異なる時間にデプロイすることができます。インスタンスクラスの変更ごとに新しい再デプロイが必要になりますが、理論上は完全に自動化できるため、これは可能です。

考え?これはあなたにとって可能な解決策ですか?

于 2016-09-19T08:05:41.863 に答える