1

我是 Google Compute/Google App Engine 平台的新手。我目前正在将使用 celery 执行异步任务的 python 烧瓶应用程序迁移到 Google Compute/Google App Engine 平台。但是在文档中,我应该使用 Google Pub/Sub 而不是 celery。在我的应用程序中,每当我运行异步任务时,我都会使用与http://blog.miguelgrinberg.com/post/using-celery-with-flask相同的原理来监视作业状态的页面。我已经检查了 google pub/sub 的文档,但是我不知道如何使用 google pub/sub 来实现它。任何人都可以帮助或指出我在谷歌发布/订阅中实现相同的正确方向。

4

1 回答 1

1

您可能可以为此使用psq,它的设计看起来像芹菜。从一般的 Cloud Pub/Sub 角度来看,您将遵循以下步骤:

  1. 为您的状态更新消息创建一个主题。
  2. 在要监控其状态的异步任务中,定期发布带有状态的消息。此消息将采用您选择的某种格式,指示完成百分比或要显示的特定消息。
  3. 为您的监控页面创建订阅,该页面将接收有关该主题的消息。
  4. 在您的监控页面(或将向您的监控页面提供数据的后台进程)中,为订阅拉取消息
  5. 处理消息并更新监控页面的作业状态。
  6. 确认您提取和处理的消息。

在此工作流程中需要牢记以下几点:

  1. Cloud Pub/Sub 保证至少一次交付。这意味着您可能会多次收到相同的消息。
  2. Cloud Pub/Sub 不对订购提供任何保证。因此,如果您定期发布状态更新,您的订阅者可能会收到乱序的信息。对于您的情况,您可能希望您的消息在消息中包含某种时间戳或严格递增的标识符,以便对每个任务的状态更新进行排序。如果您跟踪收到的最新状态更新,那么您可以忽略旧消息并立即确认它们。
于 2016-05-11T14:36:50.253 回答