下記のコードを使用して、タイムスタンプ付きのGoogle Spannerテーブルから読み取ろうとしています。タイムスタンプでスパナを読み取るとエラーが発生する
import datetime as dt
from google.cloud.spanner.client import Client
proj = 'my_project'
inst = 'my_instance'
db = 'my_database'
datetime_now = dt.datetime.now()
with Client(proj).instance(inst).database(db).snapshot(read_timestamp=datetime_now) as snapshot: # this fails
#with Client(proj).instance(inst).database(db).snapshot() as snapshot: # this works
result = snapshot.execute_sql('some SQL query')
for row in result:
print row
私は、 "スナップショット" コールにタイムスタンプを設定した場合、これは以下のエラーメッセージが返されます、(StatusCode.DEADLINE_EXCEEDEDで終了RPCの< _Rendezvous:
grpc._channel._Rendezvousをデッドライン超過)>
私が "[...]。snapshot()"を呼び出すと、テーブルが正しく読み込まれます。
これはスクリプトやインストールの問題でエラーですか?
編集:ちょうど私はpython spanner APIの最新バージョンではなかった気づいた。 0.26から0.28に更新した後も、エラーが発生するのではなく、何かを返さずにスクリプトが永遠に続くことを除いて、同じことが起こります。いくつかの研究の後
クロックの同期は困難です。 'read_timestamp'の代わりに' max_staleness'を使うことをお勧めします。詳細はこちらhttps://googlecloudplatform.github.io/google-cloud-python/stable/spanner/database-api.html#google.cloud.spanner.database.Database.snapshot –
ありがとうございます。 。 –