簡體   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