繁体   English   中英

将Google Cloud Platform API集成到Flask应用中

[英]Integrating the Google Cloud Platform API into a Flask app

我正在创建一个基本的flask应用程序,该应用程序将在GCP项目上运行的实例列表输出到浏览器中,但是在浏览器中返回api调用的结果时遇到了一些问题。

我的烧瓶应用程序看起来像这样:

@app.route(API_ROOT + 'list')
def list_all_running():
    return test_list.list_all_running_instances()

我试图返回的函数看起来像这样

def list_all_running_instances():

    request = service.instances().list(project=project, zone='europe-west1-d')
    while request is not None:
        response = request.execute()
        for instance in response['items']:
            # if instance['status'] == 'RUNNING':
            return instance
        request = service.instances().list_next(previous_request=request, previous_response=response)

这是此脚本的简化版本,在页面底部的示例中的“ python”下列出。

问题是,当我在flask中调用该函数时,它仅返回运行的第一个实例。 在原始gcp api脚本示例中,它使用pprint而不是return,这在控制台上可以正常工作,但是我无法将pprint结果输出到浏览器。

谁能推荐这样做的最佳方法? 有没有一种方法可以通过Flask将pprint输出到浏览器中。 我意识到,返回时只会输出第一次迭代的结果,然后停止,因此会出现此问题。

如您所知,我在Flask刚起步,所以道歉,如果这似乎是一个愚蠢的问题。

问题是return语句完成了list_all_running_instances函数的执行。 您可以执行以下操作:

def list_all_running_instances():

    request = service.instances().list(project=project, zone='europe-west1-d')
    all_instances = []
    while request is not None:
        response = request.execute()
        all_instances.extend(response['items'])
        request = service.instances().list_next(previous_request=request, previous_response=response)
    return {'all_instances': all_instances}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM