Crear listas de aplicaciones en cola

En esta página se describe cómo crear y personalizar una lista de aplicaciones en cola y cómo examinar el contenido de una cola.

Crea colas mediante un archivo de configuración de cola

Para procesar una tarea, debes agregarla a una lista de aplicaciones en cola. App Engine proporciona una lista de aplicaciones en cola predeterminada llamada default, que está configurada y lista para usar con la configuración predeterminada. Si quieres, puedes agregar todas las tareas a la cola predeterminada, sin necesidad de crear ni configurar otras.

Para agregar colas o cambiar la configuración predeterminada, edita el archivo de configuración de cola de la aplicación, que se sube a App Engine. Puedes crear hasta 100 colas. No es posible crear colas de forma dinámica.

Este archivo de configuración define dos colas:

queue:
- name: queue-blue
  target: v2.task-module
  rate: 5/s

- name: queue-red
  rate: 1/s

Para subir el archivo, usa lo siguiente:

gcloud app deploy queue.yaml

Todas las tareas que se agregan a queue-blue se envían al módulo de destino v2.task-module. La frecuencia de actualización de queue-red cambia de 5/s a 1/s. Las tareas se eliminarán de la cola y se enviarán a sus destinos con una frecuencia de 1 tarea por segundo.

Si borras una cola, tendrás que esperar aproximadamente 7 días para poder crear otra con el mismo nombre.

Hay muchos otros parámetros que se pueden agregar al archivo de configuración para personalizar el comportamiento de una lista de aplicaciones en cola. Para obtener más información, consulta la referencia del archivo de configuración de cola.

Define la frecuencia de procesamiento de la lista de aplicaciones en cola

Puedes controlar la velocidad a la que se procesan las tareas en cada una de las colas mediante la definición de otras directivas, como rate, bucket_size y max_concurrent_requests.

En la lista de tareas en cola, se usan buckets de token para controlar la frecuencia de ejecución de las tareas. Cada cola con nombre tiene un bucket de tokens que contiene hasta la cantidad máxima de tokens especificada por bucket_size, o hasta 5 tokens si no especificas el tamaño del bucket.

Cada vez que la aplicación ejecuta una tarea, se quita un token del bucket. La app continúa procesando tareas de la cola hasta que el bucket se queda sin tokens. App Engine rellena el bucket con tokens nuevos de forma continua según el valor de rate que especificaste para la cola.

Si hay tareas para procesar en la cola y quedan tokens en el bucket correspondiente, App Engine procesa de forma simultánea la cantidad de tareas que corresponda a los tokens disponibles. Esto puede ocasionar aumentos de actividad de procesamiento que consumen recursos del sistema y compiten con las solicitudes de entrega del usuario.

Si deseas evitar que se ejecuten demasiadas tareas a la vez o la contención del almacén de datos, usa max_concurrent_requests.

En el siguiente ejemplo, se muestra cómo configurar max_concurrent_requests para limitar las tareas y cómo ajustar el tamaño y la velocidad del bucket según las necesidades de la aplicación y los recursos disponibles:

queue:
- name: queue-blue
  rate: 20/s
  bucket_size: 40
  max_concurrent_requests: 10

Configura límites de almacenamiento para todas las colas

Puedes usar el archivo de configuración de cola para definir la cantidad de almacenamiento total que pueden consumir los datos de las tareas en todas las colas. Para definir el límite de almacenamiento total, debes incluir un elemento denominado total_storage_limit en el nivel superior:

# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
  rate: 35/s

El valor es un número seguido de una unidad: B para bytes, K para kilobytes, M para megabytes, G para gigabytes y T para terabytes. Por ejemplo, 100K especifica un límite de 100 kilobytes. Si agregar una tarea causa que la cola exceda su límite de almacenamiento, la llamada para agregar la tarea fallará. El límite predeterminado es 500M (500 megabytes) para las aplicaciones gratuitas. En el caso de las aplicaciones con facturación, no hay límite hasta que establezcas uno de forma explícita. Este límite se puede usar para proteger la app de un error de programación de tipo bomba fork, en el que cada tarea agrega varias tareas más durante su ejecución.

Si tu aplicación recibe errores debido a una cuota insuficiente cuando se agregan tareas, puede ser útil que incrementes el límite de almacenamiento total. Si utilizas esta función, te recomendamos enfáticamente que establezcas un límite que corresponda al almacenamiento requerido para las tareas de varios días. Esto permite crear copias de seguridad temporales de las colas y seguir aceptando tareas nuevas mientras se completan las tareas pendientes y, al mismo tiempo, la app se mantiene protegida contra errores de programación de tipo bomba fork.

Supervisa colas en Cloud Console

  1. En Cloud Console, ve a la página de Cloud Tasks.

    Ir a Cloud Tasks

    Ten en cuenta que, si vas a la página Lista de tareas en cola de App Engine, habrá instrucciones que te guiarán a la página de Cloud Tasks. Esta actualización en Cloud Console no cambia el funcionamiento de las listas de tareas en cola.

  2. Habilita la API de Cloud Tasks.

  3. Cuando estés en la página de Cloud Tasks, verás una lista de todas las colas de la aplicación. Si haces clic en el nombre de una cola, aparecerá la página Detalles de la cola, que muestra todas las tareas de la cola seleccionada.

¿Qué sigue?

Aprende a crear tareas.