🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1336閲覧

FlaskのローカルサーバーとGAEにデプロイしたAPIで挙動が違う理由が知りたいです。

amaturePy

総合スコア131

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/01/17 07:43

以下の機能の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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

GAEのログ管理画面から"from google.cloud import storage"の部分でインポートエラーが起きていることがわかりました。こちら削除して再度デプロイしたところ正常に動きました。

投稿2021/01/17 09:05

amaturePy

総合スコア131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問