1
我在我的項目上設置了Google Cloud BigTable羣集。該項目的主要代碼庫在標準的Python App Engine環境中運行,由於依賴grpcio,因此無法使用gcloud-python庫。爲了解決這個問題,我在同一個項目中設置了一個Python App Engine Flexible Environment服務,並編寫了一個非常簡單的Flask服務器來運行它,然後我可以從我的標準環境中啓動。代碼看起來像這樣:使用gcloud-python連接到google的未認證錯誤bigtable
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.")
如果我重新部署該服務時,它再次開始工作。當我在本地運行服務時,我沒有觀察到這種行爲。
我在做什麼錯?我假設我在我的客戶端設置中出現了一些錯誤,它沒有正確使用應用程序引擎憑證。當我遇到此錯誤時,是否需要終止客戶端並重新啓動?
昨晚,我們發佈了一個更新的Python客戶端到PyPi 0.17.0。它已經大幅更新。 –
對於此問題,存在一個未解決的問題https://github.com/GoogleCloudPlatform/gcloud-python/issues/1917。 –
太棒了,我會密切關注更新。 –