如何使用 Google Cloud Tasks 扩展拉取队列



我有一个GAE/P/Standard/FirstGen应用程序,它使用Sendgrid发送了很多电子邮件。 Sendgrid 向我的应用程序发送了很多通知,用于何时发送电子邮件、打开等。

这是我处理 Sendgrid 通知的方式:

  • 我的处理程序处理 Sendgrid 通知并将任务添加到拉取队列
  • 大约每分钟我从拉取队列中租用一批任务来处理它们。

这很好用,除非我发送的电子邮件比平时多。 当我以高速率将任务添加到拉取队列时,拉取队列拒绝租用任务(它以TransientError响应(,因此拉取队列不断填满。

扩展此过程的最佳方法是什么?

如果我创建第二个拉取队列并在两个拉取队列之间拆分任务,这会让我的容量翻倍吗? 还是我应该考虑其他事情?

====

这是我添加任务的方式:

q = taskqueue.Queue("pull-queue-name")
q.add(taskqueue.Task(data, method="PULL", tag=tag_name))

我在谷歌文档中找到了一些关于它的信息。根据它,TransientError的解决方案应该是:

捕获这些异常,从调用 lease_tasks(( 中退出,然后 请稍后再试。

等。

实际上,我认为这是App Engine任务队列,而不是不同产品的云任务。

根据我的理解,没有选择可以更好地扩展它。似乎一些解决方案可能是迁移到云任务和发布/订阅,这是在 GAE 中管理队列的更好方法,您可以在此处找到。

我希望它会以某种方式有所帮助... :)

最新更新