【问题标题】:Simple task queue using Google Cloud Platform : issue with Google PubSub使用 Google Cloud Platform 的简单任务队列:Google PubSub 的问题
【发布时间】:2023-03-29 23:51:01
【问题描述】:

我的任务:我无法公开谈论我的任务的具体内容,但这里有一个类比:每两个小时,我会收到数量不定的语音音频文件。有时只有10个,有时800个或更多。假设我有一个昂贵的 python 任务要对这些文件执行,例如自动语音识别。我有一个 Google Intance 托管组,可以部署任意数量的虚拟机来执行此任务。

问题:现在,我正在使用 Google PubSub。每两个小时,一个主题就会充满音频 ID。托管组的实例可以根据队列的大小进行部署。问题是,只有一个工作人员从 PubSub 订阅中获取所有消息,而其他工作人员没有收到任何消息,可能是因为队列没有那么长(最多约 1000 条消息)。这个问题在python Google Cloud github中报告了少数情况,不清楚是PubSub的预期目的,还是只是一个bug。

如何在 Python 和 Google Cloud 中实现与简单的无服务器任务队列等效的功能,并且可以根据给定的指标(例如队列的大小)生成实例?这是 PubSub 的预期目的吗?

提前致谢。

【问题讨论】:

    标签: python-2.7 google-cloud-platform google-cloud-pubsub


    【解决方案1】:

    在 App Engine 中,您可以创建推送队列并设置速率/并发限制,Google 将为您处理其余的事情。 App Engine 将根据需要进行扩展(例如,增加 Python 实例)。

    如果您在 App Engine 之外(例如 GKE),那么 pubsub Python 客户端库可能会同时提取许多消息。我们也很难控制这个(对于 google-cloud-pubsub==0.34.0),所以我们最终在 google-cloud-pubsub 之上编写了一个小的调整,调用 SubscriberClient.pull 并设置了 max_messages)。服务器端 pubsub API 确实遵守 max_messages。

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多