【问题标题】:Keeping task queues in chronological order in appengine在 appengine 中按时间顺序保持任务队列
【发布时间】:2017-06-13 03:11:07
【问题描述】:

在谷歌应用引擎中,当你将任务添加到同一个推送任务队列中时,它们会按时间顺序依次排队吗?或者是否有可能一个任务可以在另一个任务之前执行,尽管它是最后添加的? (这都是假设他们使用相同的队列)。

【问题讨论】:

    标签: google-app-engine objectify task-queue


    【解决方案1】:

    不一定。我可以想到 2 种可能不会发生的情况:

    • 任务可以有不同的 ETA(例如,将来),顺序通常是 ETA,请参阅do google app engine pull queues return tasks in FIFO order?

    • 任务执行可能会失败(无论出于何种原因),并且可能会使用退避方案自动重试(即在一些延迟之后)。这意味着通常会在失败后运行的其他任务实际上可能在其重试尝试之前运行。

    【讨论】:

    • “这意味着通常在失败之后运行的其他任务实际上可能在其重试尝试之前运行” - 哎哟。很高兴知道。谢谢。
    【解决方案2】:

    任务队列不保证执行顺序。特别是,计划立即运行的任务遵循可能导致大量重新排序的代码路径。推送和拉取队列的行为也明显不同。

    但是,如果您将任务安排在未来很短的时间后运行,则执行顺序更有可能是 eta 顺序。同样,没有任何保证,您应该将无序交付作为一种正常但不常见的情况进行设计。故障模式通常是在短时间内出现大量无序任务,而不是偶尔孤立的无序任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多