gpt4 book ai didi

python - 带有时间戳的 Spanner 读取失败

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:53 25 4
gpt4 key购买 nike

我正在尝试使用下面的代码从带有时间戳的 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

如果我在“快照”调用中设置时间戳,则会返回以下错误消息:

grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.DEADLINE_EXCEEDED, Deadline Exceeded)>

同时,如果我只是调用“[...].snapshot()”,则可以正确读取该表。

这是我的脚本中的错误,还是安装问题?

编辑:刚刚注意到我没有使用最新版本的 python spanner API。从 0.26 更新到 0.28 后,会发生同样的事情,只是脚本会永远继续下去而不返回任何内容,而不是引发错误。

最佳答案

经过一些研究,解决方案(以防其他人遇到类似的问题):

datetime_now = dt.datetime.now()(在本地运行时)返回当前系统时间。如果与数据库时间 (UTC) 相比是 future 时间,则读取会失败或挂起。使用datetime_now = dt.datetime.utcnow()修复了此问题,但如果脚本在云上执行,则可能不需要这样做。

关于python - 带有时间戳的 Spanner 读取失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46710488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com