【问题标题】:How to scale pull queues with Google Cloud Tasks如何使用 Google Cloud Tasks 扩展拉取队列
【发布时间】:2020-05-17 21:20:40
【问题描述】:

我有一个 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))

【问题讨论】:

  • 可能是添加任务到队列的问题?你是怎么做到的?
  • @vitooh,更新问题。

标签: google-app-engine google-cloud-platform


【解决方案1】:

我在 Google 文档 here 中找到了一些相关信息。根据 TransientError 的解决方案应该是:

捕获这些异常,停止调用lease_tasks(),然后 请稍后再试。

等等

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

据我了解,没有更好的扩展方式。似乎某些解决方案可能是迁移到 Cloud Task 和 Pub/Sub,这是在 GAE 中管理队列的更好方法,您可能会发现 here

我希望它会有所帮助... :)

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 1970-01-01
    • 2019-03-25
    • 2020-11-24
    • 1970-01-01
    • 2014-05-28
    • 2021-02-08
    • 2019-12-30
    • 2020-01-26
    相关资源
    最近更新 更多