gpt4 book ai didi

python - 获取谷歌云PubSub的单一消息的大小

转载 作者:行者123 更新时间:2023-12-04 08:06:17 24 4
gpt4 key购买 nike

我有一个设置,可以将消息发布到 Google Cloud PubSub服务。
我希望获得我发布到 PubSub 的每条消息的大小 .因此,为此,我确定了以下方法(注意:我使用 Python 客户端进行发布和订阅,按照他们的文档中介绍的逐行实现):

  • 使用“Monitoring”查看来自 Google Cloud Console 的消息计数' 功能
  • 创建一个 pull subscription client并使用 message.size 查看尺寸在从请求的主题中提取的消息的回调函数中。
  • 估计之前的消息大小 publishing通过按照 PubSub message schema 将它们转换为 JSON并使用 sys.getsizeof()

  • 对于我使用 Python 发布者客户端发布的如下示例消息:
    {
    "data": 'Test_message',
    "attributes": {
    'dummyField1': 'dummyFieldValue1',
    'dummyField2': 'dummyFieldValue2'
    }
    }
    ,我得到的大小为 101 作为 message.size订阅客户端中以下回调函数的输出:
    def callback(message):
    print(f"Received {message.data}.")
    if message.attributes:
    print("Attributes:")
    for key in message.attributes:
    value = message.attributes.get(key)
    print(f"{key}: {value}")
    print(message.size)
    message.ack()
    而 Cloud Console Monitoring 上显示的大小约为 79 B。
    enter image description here
    所以这些是我的问题:
  • 为什么同一消息的大小不同?
  • message.size 的输出以字节为单位?
  • 如何在使用 python 客户端发布之前查看消息的大小?
  • 如何在 Cloud Console 上查看单个消息的大小,而不是我可以在“监控”部分找到的给定时间范围内的汇总大小度量?
  • 最佳答案

    为了进一步为社区做出贡献,我总结了我们的讨论作为答案。

  • 关于message.size ,它是订阅者客户端中消息的一个属性。另外,根据documentation ,其定义为:

  • Returns the size of the underlying message, in bytes


    因此,您将无法在发布之前使用它。
  • 对面,message_size是 Google Cloud Metrics 中的一个指标,供 Cloud Monitoring 使用,here .

  • 最后,讨论的最后一个主题是您的目标是监控您的配额支出,因此您可以留在免费层。因此,最好的选择是使用 Cloud Monitoring 并根据 pubsub.googleapis.com/topic/byte_cost 等指标设置警报。 .以下是一些链接,您可以在其中找到更多相关信息: Quota utilisation , Alert event based , Alert Policies .

    关于python - 获取谷歌云PubSub的单一消息的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66206515/

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