Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以编程方式从appengine获取版本列表_Python_Google App Engine - Fatal编程技术网

Python 以编程方式从appengine获取版本列表

Python 以编程方式从appengine获取版本列表,python,google-app-engine,Python,Google App Engine,我想从appengine获得已部署版本的列表,无论是从远程API还是通过appcfg.py。我似乎找不到任何方法来做这件事,当然也找不到记录在案的方法。有人知道这样做的方法吗(即使没有记录)?您可以在管理控制台的“管理日志”下列出已部署的版本。没有屏幕抓取这个页面,就无法通过编程方式访问这个数据 您可以将此作为增强请求提交给。我可以通过将一些RPC代码从appcfg.py复制到我的应用程序中来实现这一点。我发布了一篇详细介绍如何做到这一点的文章,但我将在这里为子孙后代重复这些内容 。这将为您提供

我想从appengine获得已部署版本的列表,无论是从远程API还是通过appcfg.py。我似乎找不到任何方法来做这件事,当然也找不到记录在案的方法。有人知道这样做的方法吗(即使没有记录)?

您可以在管理控制台的“管理日志”下列出已部署的版本。没有屏幕抓取这个页面,就无法通过编程方式访问这个数据


您可以将此作为增强请求提交给。

我可以通过将一些RPC代码从appcfg.py复制到我的应用程序中来实现这一点。我发布了一篇详细介绍如何做到这一点的文章,但我将在这里为子孙后代重复这些内容

  • 。这将为您提供从应用程序中与Google的RPC服务器交互所需的OAuth2和httplib2库
  • 将此文件从安装在您的开发计算机上的GAE SDK复制到您的GAE webapp中:
    google/appengine/tools/appengine\u rpc\u httplib2.py
  • 通过执行
    appcfg.py list_versions获取刷新令牌--oauth2
    从您的本地计算机。这将打开一个浏览器,您可以登录到您的谷歌帐户。然后,您可以在~/.appcfg\u oauth2\u令牌中找到
    刷新令牌
  • 在web处理程序中修改并运行以下代码:
  • 享受

    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
    

    看起来谷歌最近在
    Google.appengine.api.modules
    包中发布了一个
    get\u versions()
    函数。我建议在我的另一个答案中实现的hack之上使用它

    更多信息请访问:

    出于好奇,你为什么要这么做?对!但是,除非我遗漏了什么,否则不可能从GAE基础设施之外使用它。我正在编写一个部署脚本,它将关闭以前版本的手动扩展模块,并且我不能从本地机器/部署服务器使用这些Python API。。。