2016-06-23 15 views
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.") 

如果我重新部署該服務時,它再次開始工作。當我在本地運行服務時,我沒有觀察到這種行爲。

我在做什麼錯?我假設我在我的客戶端設置中出現了一些錯誤,它沒有正確使用應用程序引擎憑證。當我遇到此錯誤時,是否需要終止客戶端並重新啓動?

+0

昨晚,我們發佈了一個更新的Python客戶端到PyPi 0.17.0。它已經大幅更新。 –

+1

對於此問題,存在一個未解決的問題https://github.com/GoogleCloudPlatform/gcloud-python/issues/1917。 –

+0

太棒了,我會密切關注更新。 –

回答