2016-09-14 8 views
1

Я использую экземпляры backend для проекта Google App Engine. (Внешние экземпляры не могут обрабатывать запросы более 60 секунд - мне нужно больше времени.)Программный код экземпляра backend для Google App Engine

Я выбрал тип экземпляра B4, потому что иногда загрузка высока. Однако в определенные моменты времени (скажем, с 2 до 7 утра) нагрузка настолько мала, что наличие экземпляра B4 переполняется.

Я хочу сделать задание cron, которое меняет тип экземпляра на B2 в определенные моменты времени и обратно в B4 в другое время, чтобы сэкономить.

Однако, глядя на Modules API, я не мог найти способ сделать это.

Как я могу это сделать?

Edit после получения ответа на Ramiel

В конце концов я использовал 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

Checkout админ-API конечных точек

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

Если это не работает по какой-то причине, вы можете также использовать несколько версий приложения с различными масштабирования настроек/экземпляра и программно переключить их с start_version из Modules API


кстати, если переключиться на ручное масштабирование вы не имеете 60s ограничить

+0

Это именно то, что мне нужно! Благодаря! – yuku

0

Это не может быть то, что вы ищете, но это возможно способ достижения того, чего вы хотите.

Настройте систему на движке контейнера или что-то подобное, что автоматически вытащит последний код из вашего репо, автоматически отрегулирует тип экземпляра и автоматически выполнит повторное развертывание. Вы могли бы развернуть разные типы экземпляров в разное время. Для каждого изменения класса экземпляра потребуется новое повторное развертывание, но они могут быть полностью автоматизированы в теории, чтобы это было возможно.

Мысль? Возможно ли это для вас?

0

Задача Очередь может работать в течение 10 минут, проверьте document