2011-02-05 13 views
5

Google App Engine tiene dos métodos para ejecutar trabajos en algún momento más tarde, Task Queues y Deferred jopsGoogle App Engine - Uso colas de tareas o diferido Empleo

Apoyan todas las mismas características en lo que puedo decir (por ejemplo, un diferido el trabajo puede colocarse en una cola de tareas particular para que pueda acelerar la ejecución), pero los trabajos diferidos parecen mucho más fáciles de implementar y más flexibles.

¿Alguien sabe de las desventajas de cada método? ¿Alguna circunstancia en la que desee utilizar colas de tareas sobre trabajos diferidos?

Respuesta

11

no estoy seguro de si se dio cuenta, pero la documentación para deferreds tiene esta sección en el extremo:

usted puede preguntarse cuándo utilizar ext.deferred, y cuando seguir con la construcción -en API de cola de tareas. Aquí están nuestras sugerencias.

es posible que desee utilizar la biblioteca diferida si:

  • Sólo se utiliza la cola de tareas a la ligera.
  • Desea refactorizar el código existente para que se ejecute en la cola de tareas con un mínimo de cambios.
  • Está escribiendo una tarea de mantenimiento única, como la migración de esquema.
  • Su aplicación tiene muchos tipos diferentes de tareas en segundo plano, y escribir un controlador separado para cada una de ellas sería oneroso.
  • Su tarea requiere argumentos complejos que no se serializan fácilmente sin utilizar Pickle.
  • Está escribiendo una biblioteca para otras aplicaciones que necesitan hacer un trabajo de fondo.

Es posible que desee utilizar la API de cola de tareas si:

  • necesita un control completo sobre cómo las tareas se ponen en cola y ejecutados.
  • Necesita una mejor administración o supervisión de colas que las entregas diferidas.
  • Tiene un alto rendimiento, y la sobrecarga es importante.
  • Está construyendo abstracciones más grandes y necesita control directo sobre las tareas.
  • Le gusta más el modelo webhook que el modelo RPC.

Naturalmente, puede utilizar la API Task Queue y la biblioteca diferida una al lado de la otra, si su aplicación tiene requisitos que se ajustan a ambos grupos.

+1

Doh - ¡cómo lo extrañé! – Ryan

+1

metadatos de diferidos se puede acceder utilizando * os.environ *; Con la consola de administración puede supervisar cada tarea, puesta en cola por la cola de tareas o diferida. – systempuntoout

+0

@systempuntoout: ¡Gracias por las correcciones! En su mayoría, he usado la API Task Queue, y estaba pasando por la documentación y mi memoria borrosa cuando se trataba de los diferidos. Actualizaré mi respuesta y me disculpo por la información incorrecta. – shang