我的任务:我不能公开谈论我的任务的具体内容,但这里有一个类比:每两个小时,我会收到数量不等的语音音频文件。有时只有 10 个,有时 800 个或更多。假设我要对这些文件执行一项代价高昂的 Python 任务,例如自动语音识别。我有一个 Google Intance 托管组,可以部署任意数量的 VM 来执行此任务。
问题:现在,我正在使用 Google PubSub。每两个小时,一个主题就会充满音频 ID。可以根据队列的大小部署托管组的实例。问题是,只有一个工作人员从 PubSub 订阅中获取所有消息,而其他人没有收到任何消息,这可能是因为队列不是那么长(最多约 1000 条消息)。此问题在python Google Cloud github 中的少数情况下报告,目前尚不清楚这是PubSub 的预期目的,还是只是一个错误。
我怎样才能在 Python 和 Google Cloud 中实现一个简单的无服务器任务队列,并且可以根据给定的指标(例如队列的大小)生成实例?这是 PubSub 的预期目的吗?
提前致谢。
在 App Engine 中,您可以创建推送队列并设置速率/并发限制,Google 将为您处理其余的工作。App Engine 将根据需要进行扩展(例如增加 Python 实例)。
如果您在 App Engine 之外(例如 GKE),pubsub Python 客户端库可能会一次拉取许多消息。我们也很难控制它(对于 google-cloud-pubsub==0.34.0),因此我们最终在 google-cloud-pubsub 调用 SubscriberClient.pull 并设置了 max_messages 的基础上编写了一个小调整。服务器端发布订阅 API 确实遵守 max_messages。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句