代码之家  ›  专栏  ›  技术社区  ›  Kerighan

使用Google云平台的简单任务队列:与Google Pubsub的问题

  •  0
  • Kerighan  · 技术社区  · 6 年前

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

    问题: 现在,我正在使用Google Pubsub。每两小时,一个主题都会充满音频ID。可以根据队列的大小部署托管组的实例。问题是,只有一个工作人员从pubsub订阅中获取所有消息,而其他工作人员没有收到任何消息,可能是因为队列没有那么长(最多1000条消息)。这个问题在python google cloud github中有几个案例被报告,目前还不清楚它是pubsub的预期用途,还是仅仅是一个bug。

    如何在python和google cloud中实现一个简单的无服务器任务队列的等价物,以及如何根据给定的度量(例如队列的大小)生成实例?这是Pubsub的预期目的吗?

    事先谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Marcel    6 年前

    在应用程序引擎中,您可以创建推送队列并设置速率/并发限制,而谷歌将为您处理其余的问题。应用引擎将根据需要进行扩展(例如增加python实例)。

    如果您不在应用程序引擎(例如gke)之外,pubsub-python客户机库可能会同时拉许多消息。我们很难控制(对于google cloud pubsub==0.34.0),所以我们在google cloud pubsub调用subscriberclient.pull和max_messages集的基础上做了一个小调整。服务器端pubsub api确实遵循max_消息。