【发布时间】:2018-10-15 10:53:40
【问题描述】:
有没有办法在数据流中获取数据存储实体旧版 urlsafe?
我尝试了一些方法,但都失败了......
-
直接编码
base64.urlsafe_b64encode(key.SerializeToString()).strip(b'=')=> 和 appengine 不一样
-
导入 google.cloud.datastore.key
=> 似乎与 dataflow datastoreio 冲突?
-
从 google.cloud.datastore 复制 _app_engine_key_pb2.py 并像 to_legacy_urlsafe() 源代码一样使用它
elements = [] for part in key.path: element_kwargs = {'type': part.kind} if part.id: element_kwargs['id'] = part.id elif part.name: element_kwargs['name'] = part.name element = _app_engine_key_pb2.Path.Element(**element_kwargs) elements.append(element) legacy_path = _app_engine_key_pb2.Path(element=elements) reference = _app_engine_key_pb2.Reference( app=key.partition_id.project_id, path=legacy_path, name_space=key.partition_id.namespace_id ) raw_bytes = reference.SerializeToString() urlsafe = base64.urlsafe_b64encode(raw_bytes).strip(b'=')=> 和 appengine 相比还是不一样...
【问题讨论】:
标签: google-cloud-datastore google-cloud-dataflow apache-beam