在发动机中按时间顺序保持任务队列

时间:2017-06-13 03:11:08

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

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

但是,如果您计划在将来短时间内运行任务,则执行顺序更可能是eta订单。同样,没有任何保证,你应该围绕无序交付进行工程设计,这是一个正常的,虽然不常见的情况。失败模式通常是短时间内的大量无序任务,而不是偶尔孤立的无序任务。