2017-06-06 81 views
0

我正在創建一個基本的應用程序,該應用程序將在GCP項目上運行的實例列表輸出到瀏覽器中,但在返回api調用的結果時遇到了一些問題在瀏覽器內部。將Google Cloud Platform API集成到Flask應用程序

我的瓶的應用程序看起來是這樣的:

@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) 

這是this script縮短和改編版本下「列出的功能python'在頁面底部的例子中。

問題是當我在flask中調用函數時,它只返回第一個實例運行。在原始的gcp api腳本示例中,它使用pprint而不是返回,這在控制檯上可以正常工作,但我無法將pprint結果輸出到瀏覽器。

任何人都可以推薦這樣做的最佳方式?有沒有一種方法可以通過Flask將pprint輸出到瀏覽器中。我意識到,返回時它只會輸出第一次迭代的結果,然後停止,因此這個問題。

正如你可以告訴我在Flask的相當新穎,所以如果這似乎是一個愚蠢的問題,很抱歉。

回答

0

問題是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} 
+0

偉大的東西,似乎做我需要它做的事情。謝謝! –

相關問題