Google App Engine 上的 Push vs Pull Queues

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

我的理解是,任务队列 API 允许您定义可以将工作排队到的任务队列。不知何故,这与GAE的自动扩展功能配合使用,因此您无需显式管理使用这些队列中的任务的工作线程数量:GAE只是为您完成。

但是,我找不到“国王的英语”描述推拉队列之间的区别。什么是“推送队列”推送?什么是“拉取队列”拉取?它们是否都配置在内部?queues.xml


答案 1

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

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

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


答案 2

推荐