私のプロジェクトでGoogle Cloud BigTableクラスターをセットアップしました。このプロジェクトのメインコードベースは、grpcioに依存しているため、gcloud-pythonライブラリを使用できない標準のPython App Engine環境で動作します。これを回避するために、私は同じプロジェクト内でPython App Engine Flexible Environmentサービスを設定し、それを実行するための非常に単純なFlaskサーバーを作成しました。コードは次のようになります。Google Bigtableに接続するためのgcloud-pythonを使用した認証されていないエラー
from gcloud import bigtable
app = Flask(__name__)
client = bigtable.Client(project=bigtable_config.PROJECT_ID, read_only=True)
cluster = client.cluster(bigtable_config.ZONE_ID, bigtable_config.CLUSTER_ID)
table = cluster.table(bigtable_config.TABLE_ID)
@app.route("/query/<start_key>/<end_key>")
def run_query(start_key, end_key):
if not client.is_started():
client.start()
row_data = table.read_rows(start_key=start_key, end_key=end_key)
row_data.consume_all()
// do some stuff to the row data here, get results
return jsonify(results)
私はこのコードをローカルで実行することができ、うまく動作します。私はそれを私のサービスに配備することができ、それは素晴らしい仕事を続けています。サービスは、一定の時間のためにアイドル状態にあればしかし、その後、私が作るすべての要求は、このエラーで失敗を開始し、(私は典型的には約時間後に気づいた):
NetworkError(code=StatusCode.UNAUTHENTICATED, details="Request had invalid authentication credentials.")
私は、サービスを再デプロイする場合は、それをもう一度作業を開始します。私はローカルでサービスを実行しているときにこの動作を観察しません。
私は間違っていますか?私はクライアントのセットアップで間違いを犯していると仮定しています。クライアントの設定では、アプリエンジンの資格情報を正しく使用していません。このエラーが発生した場合、クライアントを強制終了して再起動する必要がありますか?
昨夜、PyPi 0.17.0に更新されたPythonクライアントをリリースしました。それは実質的に更新されました。 –
この問題については未解決の問題https://github.com/GoogleCloudPlatform/gcloud-python/issues/1917があります。 –
恐ろしいですが、私は更新を見守ります。 –