【问题标题】:Bigtable Emulator & Google Discovery Resource with Python使用 Python 的 Bigtable 模拟器和 Google 发现资源
【发布时间】:2023-04-03 00:56:01
【问题描述】:

我正在尝试在 pythongoogleapiclient.discovery.Resource 模块中使用 bigtable 模拟器。

  • Bigtable 模拟器在127.0.0.1:8086 上运行

通过发现服务设置 Bigtable 客户端服务:

http = httplib2.Http(None, timeout=http_timeout)
client=discovery.build('bigtableadmin', 'v2', http=_http)
_client._baseUrl = 127.0.0.1:8086

以下 post 请求由发现发送:

http://127.0.0.1:8086/v2/projects/my_project/instances/my_instance/tables?alt=json

最终返回[Errno 54] Connection reset by peer.

我可以通过google.cloud.bigtable.Client 毫无问题地使用bigtable 模拟器。

我可以使用具有相同发现服务的本地 pubs 模拟器,rest api 似乎工作正常,但在 bigtable 模拟器上失败。

Bigtable Emulator 是否支持发布请求?或者模拟器只使用google.cloud.bigtable.Client?我找不到有关模拟器文档的任何详细信息。

【问题讨论】:

  • 您能否详细说明您使用资源类的方式?添加带有特定方法的代码 sn-p 用于示例执行将有助于缩小和跟踪复制。
  • 感谢您的反馈,我添加了发现服务构建。同样的方法适用于 pubsub 模拟器,并且服务客户端可以将 rest api 调用发送到模拟器。但它不适用于大表。我开始认为bigtable emulator 不支持rest api 操作。
  • 我发现了一些具有类似行为的条目,我会说问题取决于 Discovery 库管理连接的方式。我试过 curl ,我得到了完全相同的错误。 stackoverflow.com/questions/8658118/…stackoverflow.com/questions/50839322/…
  • 我看到了。我的猜测是 bigtable 模拟器不支持 REST api 调用。 @sergiofranco
  • 来自 google.cloud.bigtable.Client 的文档字符串:“注意::由于 Cloud Bigtable API 需要 gRPC 传输,因此此类不接受 _http 参数。”

标签:
python
google-cloud-platform
bigtable