google.cloud.pubsub_v1 和 google.cloud.pubsub 有啥区别?
Posted
技术标签:
【中文标题】google.cloud.pubsub_v1 和 google.cloud.pubsub 有啥区别?【英文标题】:What is the difference between google.cloud.pubsub_v1 and google.cloud.pubsub?google.cloud.pubsub_v1 和 google.cloud.pubsub 有什么区别? 【发布时间】:2018-06-20 05:04:42 【问题描述】:我看到两者都在 Google 的不同文档中使用:
from google.cloud import pubsub
发现于:
https://github.com/GoogleCloudPlatform/google-cloud-python/tree/master/pubsub https://googlecloudplatform.github.io/google-cloud-python/latest/pubsub/而
from google.cloud import pubsub_v1
在以下位置找到:
https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/pubsub/cloud-client/subscriber.py https://cloud.google.com/pubsub/docs/pull【问题讨论】:
【参考方案1】:google.cloud.pubsub 库旨在让 Cloud Pub/Sub 发布者和订阅者轻松获得最佳性能。它具有更高级的功能,例如消息批处理、异步消息传递以及订阅者尚未确认的消息的自动确认截止期限延长。该 API 与底层 Cloud Pub/Sub 服务 API 不同。比如这个库没有直接暴露pull
方法;而是将消息传递给传递给subscriber 的open
方法的回调。
google.cloud.pubsub_v1 库直接公开underlying API。在需要这种级别的控制的特定情况下,它可能很有用,例如,当需要同步订阅者以便发出请求以响应来自下游依赖项的同步操作时。
如果可能,最好使用 google.cloud.pubsub 库。
【讨论】:
嗨,确认一下,这仍然有效吗?我刚才做了pip install google-cloud-pubsub
,在virtualenv 中似乎创建了文件夹/site-packages/google/cloud/pubsub_v1
/* ... 做pip install google-cloud-pubsub_v1
返回:> 找不到满足google 要求的版本-cloud-pubsub_v1 ...
另外,客户端库 (pubsub_v1
) 似乎不再支持 REST API,它不再支持基于 gRPC 的 API...谢谢!
@VibhorJain 要安装的包是 google-cloud-pubsub
,它使用名称空间 google
和 google.cloud
并安装到您找到的那些 pubsub_v1 目录。目录的名称并不重要。正如cloud.google.com/apis/docs/client-libraries-explained“我们计划将尽可能多的云客户端库升级到 gRPC”,Google 正在将所有客户端库迁移到 gRPC,为什么不呢? http/2 上的协议缓冲区更快。理想情况下,不要编写自己的 REST 客户端代码,让客户端库处理底层细节。
看起来 没有区别 pubsub 似乎只是从 pubsub_v1 导入,请参见 github.com/googleapis/google-cloud-python/blob/master/pubsub/… 和 github.com/googleapis/google-cloud-python/blob/master/pubsub/… 即 pubsub SubcriberClient() 类是 pubsub_v1.subscriber.client pull
方法在 pubsub_v1 客户端中被列入黑名单,因此在 pubsub 客户端中。那个方法也被重新曝光了github.com/googleapis/google-cloud-python/commit/…
我认为这个答案仍然是正确的,因为有些东西没有暴露出来,比如期货,它确实有一些棘手的装饰器、黑名单和添加方法机制来控制接口。它还大量使用__all__
来精确控制导入的内容。以上是关于google.cloud.pubsub_v1 和 google.cloud.pubsub 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章