2017-06-06 9 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 'のようにページの一番下にある例にあります。

フリンジで関数を呼び出すと、最初のインスタンスが返されるだけです。元のgcp apiスクリプトの例では、コンソールで正常に動作するreturnではなくpprintを使用していますが、ブラウザにpprintの結果を出力できません。

誰もがこれを行う最善の方法をお勧めしますか? Flask経由でブラウザにpprintを出力する方法はありますか?返すときは、最初の反復の結果を出力してから停止するので、この問題が発生します。

私はフラスクではかなり新しいと言うことができますが、これは愚かな質問のように思われる場合は謝罪します。

答えて

0

問題はlist_all_running_instances関数の実行を終了するreturnステートメントです。あなたは次のようなことをすることができます:

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

素晴らしいものは、私がそれが必要なことをするようです。ありがとう! –

関連する問題