Программно получить список версий от appengine - PullRequest
4 голосов
/ 10 ноября 2011

Я хотел бы получить список развернутых версий из appengine, либо из удаленного API, либо через appcfg.py.Я не могу найти какой-либо способ сделать это, конечно, не документированный способ.Кто-нибудь знает какой-либо способ сделать это (даже без документов)?

Ответы [ 3 ]

1 голос
/ 02 ноября 2013

Я смог сделать это, скопировав часть кода RPC из appcfg.py в мое приложение. Я опубликовал эту суть , которая подробно описывает, как это сделать, но я повторю их здесь для потомков.

  1. Установить клиент Python API . Это даст вам библиотеки OAuth2 и httplib2, необходимые для взаимодействия с RPC-серверами Google из вашего приложения.
  2. Скопируйте этот файл из GAE SDK, установленного на компьютере разработчика: google/appengine/tools/appengine_rpc_httplib2.py в ваше веб-приложение GAE.
  3. Получите токен обновления, выполнив appcfg.py list_versions . --oauth2 с вашего локального компьютера. Откроется браузер, чтобы вы могли войти в свою учетную запись Google. Затем вы можете найти refresh_token в ~ / .appcfg_oauth2_tokens
  4. Измените и запустите следующий код внутри веб-обработчика:

Наслаждайтесь.

from third_party.google_api_python_client import appengine_rpc_httplib2

# Not-so-secret IDs cribbed from appcfg.py
# https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/appcfg.py#144
APPCFG_CLIENT_ID = '550516889912.apps.googleusercontent.com'
APPCFG_CLIENT_NOTSOSECRET = 'ykPq-0UYfKNprLRjVx1hBBar'
APPCFG_SCOPES = ['https://www.googleapis.com/auth/appengine.admin']

source = (APPCFG_CLIENT_ID,
            APPCFG_CLIENT_NOTSOSECRET,
            APPCFG_SCOPES,
            None)

rpc_server = appengine_rpc_httplib2.HttpRpcServerOauth2(
    'appengine.google.com',
    # NOTE: Here's there the refresh token is used
    "your OAuth2 refresh token goes here",
    "appcfg_py/1.8.3 Darwin/12.5.0 Python/2.7.2.final.0",
    source,
    host_override=None,
    save_cookies=False,
    auth_tries=1,
    account_type='HOSTED_OR_GOOGLE',
    secure=True,
    ignore_certs=False)

# NOTE: You must insert the correct app_id here, too
response = rpc_server.Send('/api/versions/list', app_id="khan-academy")

# The response is in YAML format
parsed_response = yaml.safe_load(response)
if not parsed_response:
    return None
else:
    return parsed_response
1 голос
/ 10 ноября 2011

Вы можете просмотреть развернутые версии в консоли администратора в разделе «Журналы администратора». Если не считать скриншота этой страницы, нет никакого способа получить программный доступ к этим данным.

Вы можете отправить это как запрос на улучшение в средство отслеживания проблем .

0 голосов
/ 28 ноября 2013

Похоже, что Google недавно выпустил функцию get_versions() в пакете google.appengine.api.modules.Я рекомендую использовать это вместо хака, который я реализовал в моем другом ответе.

Подробнее на: https://developers.google.com/appengine/docs/python/modules/functions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...