2012-09-07 12 views
19

Hasta el momento, nadie (ni siquiera el docs GAE) ha sido capaz de darme una muy clara descripción de cuál es la diferencia entre un empuje cola y un tirón cola .empuje vs colas de entrada en Google App Engine

Mi comprensión es que la API Task Queue le permite definir colas de tareas donde el trabajo se puede poner en cola. De alguna manera, esto funciona con la característica de escalado automático de GAE para que no tenga que administrar explícitamente la cantidad de subprocesos de trabajo que consumen tareas fuera de estas colas: GAE simplemente lo hace por usted.

Pero en ninguna parte puedo encontrar una descripción de "King's English" de la diferencia entre las colas de inserción y extracción. ¿Qué está presionando una "cola de empuje"? ¿Qué es una "cola de espera" tirando? ¿Están ambos configurados dentro de queues.xml?

Respuesta

24

En una cola de extracción encola las tareas en la cola y su código necesita extraerlas, las extrae mediante el arrendamiento de tareas de la cola y la eliminación de las tareas. si no elimina las tareas y el tiempo de concesión expira, el sistema devolverá las tareas a la cola.

Puede usar la cola de extracción (por ejemplo) para agregar varias unidades de trabajo que se pueden procesar juntas. Otro ejemplo: tarea de cola que será extraída por una máquina externa (como EC2 o gCompute) para procesar la tarea de una manera que AppEngine no puede.

En presione la cola encola las tareas en la cola, pero AppEngine las quitará de la secuencia y las ejecutará en el controlador especificado por la tarea. Puede controlar la tasa de procesamiento de tareas, cómo controlar las fallas de ejecución de tareas y AppEngine decidirá cuántas instancias (subprocesos) usar todo el procesamiento.

+1

Ahhh gracias @Shay Erlichmen (+1) - así que para resumir: una cola de "extracción" requiere que dequeue manualmente y procese tareas explícitamente en su código; mientras que con una cola de "inserción" solo especificas un controlador y una configuración y GAE se ocupa del resto. ¿Es esta una evaluación justa? Además, algunos seguimientos: (1) ¿'queues.xml' solo se aplica a las colas de espera? (2) Supongo que Task Queue API contiene código para explícitamente eliminar/eliminar tareas de una cola de espera, ¿sí? ¡Gracias de nuevo! – IAmYourFaja

+1

@pnongrata Su veraneo es correcto, y en cuanto a (1) no, también define las colas de espera en colas.xml, como mínimo, si la cola no está en el xml, no existe. y (2) sí, busque lease_queue (dequeue) y delete_tasks. –