23

到目前为止,没有人(甚至 GAE 文档)能够给我一个非常清楚的描述推送队列和拉取队列之间的区别。

我的理解是,Task Queue API 允许您定义可以将工作排入队列的任务队列。不知何故,这与 GAE 的自动缩放功能一起使用,因此您无需显式管理从这些队列中消耗任务的工作线程的数量:GAE 只是为您完成。

但是我在任何地方都找不到关于推送和拉取队列之间差异的“国王英语”描述。什么是“推送队列”推送?什么是“拉队列”拉?他们都在里面配置queues.xml吗?

4

1 回答 1

31

拉取队列中,您将任务排入队列并且您的代码需要拉取它们,您通过从队列中租用任务并删除任务来拉取它们。如果您不删除任务并且租用时间到期,系统会将任务返回到队列中。

您可以使用拉队列(例如)来聚合可以一起处理的多个工作单元。另一个示例:排队任务将由外部机器(如 EC2 或 gCompute)拉取,以便以 AppEngine 无法处理的方式处理任务。

推送队列中,您将任务排入队列,但 AppEngine 会将它们出列并在任务指定的处理程序上运行它们。您可以控制任务处理速率,如何控制任务执行失败,AppEngine 将决定使用多少个实例(线程)来进行处理。

于 2012-09-07T12:29:47.033 回答