在应用程序引擎中按时间顺序保存任务队列



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

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

  • 任务可以有不同的 ETA(例如,将来(,顺序通常是 ETA,请参阅 Google App Engine 拉取队列是否按 FIFO 顺序返回任务?

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

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

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

最新更新