以下の機能のAPIを作成しました。
①Getパラメーター(テーブル名)を変数に格納し、それとともにSQLをBigQueryに送る
②パラメーターで指定したテーブルのカラムリストを取得
③②のリストをJson形式にしてクライアントに返す
そこで出来上がったAPIをGAE(GoogleのPaasサービス)にデプロイし、パラメータにxxxxx?tableName=testのように付与してアクセスすると、結果が502のエラーになります。
ですが、FlaskのデフォルトのローカルサーバーのURLに同じパラメータをつけるとうまくリストを取得できます。
今まで同じように作成したAPIをGAEにデプロイしてきたのですが、このような挙動が初めてで理由が分からずいます。
Flaskの理解が足りないのがお恥ずかしいのですが、この挙動の違いの原因は何なのでしょうか??
ご教授頂けると幸いです。
import urllib.request import urllib.parse import json from google.cloud import storage from google.cloud import bigquery from flask import Flask, request, jsonify, Response app = Flask(__name__) @app.route('/') def get_tags(): tableName = request.args.get('tableName') or '' client = bigquery.Client() query = """SELECT column_name FROM `testProject.testTable.INFORMATION_SCHEMA.COLUMNS` where table_name = '{}' """.format(tableName) job_config = bigquery.QueryJobConfig( query_parameters=[ bigquery.ScalarQueryParameter("tableName", "STRING", tableName) ] ) query_job = client.query(query) query_res = query_job.result() tag_list = [] for row in query_res: tag_list.append(row[0]) response = Response(json.dumps(tag_list)) response.headers['Access-Control-Allow-Origin'] = '*' return response if __name__ == "__main__": app.run(debug=True)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。