Referencia de queue.yaml

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Más información sobre los IDs de región

El archivo de configuración queue.yaml se usa para crear y configurar casi todas las colas de tareas (de salida o para tareas extraídas) que usa tu aplicación. Todas las aplicaciones de App Engine incluyen una cola de inserción preconfigurada automáticamente llamada default. Aunque no crees la cola default, puedes añadir otras colas o cambiar la configuración de la cola default mediante el archivo queue.yaml.

Para configurar colas push, puedes usar los métodos queue.yaml o Queue Management de Cloud Tasks, pero no ambos a la vez. No se recomienda combinar el método de subida queue.yaml con los métodos de gestión de colas, ya que puede dar lugar a resultados inesperados.

Para configurar colas para tareas extraídas, debes usar el archivo queue.yaml.

.

Ejemplo

A continuación, se muestra un ejemplo básico que define una cola con nombre y anula la tasa de procesamiento predeterminada:

queue:
- name: my-push-queue
  rate: 1/s

A continuación, se muestra un ejemplo más complejo de una configuración de queue.yaml que muestra cómo configurar el número de intentos de tarea y modificar la tasa de procesamiento predeterminada.

queue:
- name: fooqueue
  rate: 1/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
- name: barqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 0
- name: bazqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 3

Sintaxis

El archivo queue.yaml es un archivo YAML cuya directiva raíz es queue. Esta directiva contiene cero o más colas con nombre. Cada definición de cola puede especificar los siguientes elementos:

Elemento Descripción
bucket_size (colas de salida)

Opcional. Una cola de tareas usa el algoritmo token bucket para controlar la velocidad de ejecución de las tareas. Cada cola con nombre tiene un contenedor de tokens que almacena tokens hasta el máximo especificado por el valor bucket_size. Cada vez que tu aplicación ejecuta una tarea, se elimina un token del contenedor. Seguirás procesando las tareas de la cola hasta que se agoten los tokens del contenedor de la cola. App Engine rellena el contenedor con nuevos tokens continuamente en función de la frecuencia que hayas especificado para la cola.

El tamaño del contenedor limita la velocidad a la que se procesa la cola cuando hay muchas tareas en ella y la tasa es alta. El valor máximo del tamaño del contenedor es 500. Esto te permite tener una tasa alta para que el procesamiento empiece poco después de que se ponga en cola una tarea, pero aun así limita el uso de recursos cuando se ponen en cola muchas tareas en un breve periodo de tiempo.

Si no especifica bucket_size para una cola, el valor predeterminado es 5. Te recomendamos que le asignes un valor más alto, ya que el tamaño predeterminado puede ser demasiado pequeño para muchos casos prácticos. Por ejemplo, puedes determinar el tamaño del contenedor en función de la velocidad de procesamiento.

Para obtener más información sobre este elemento, consulta la descripción comparativa de max_burst_size

en la referencia de la API Cloud Tasks.
max_concurrent_requests (colas de salida)

Opcional. Define el número máximo de tareas que se pueden ejecutar simultáneamente desde la cola especificada. El valor es un número entero. De forma predeterminada, el límite es de 1000 tareas por cola. El límite superior recomendado es de 5000 tareas por cola. Ten en cuenta que las colas pueden aumentar lentamente cuando se crean por primera vez o si han estado inactivas durante un tiempo.

Si restringes el número de tareas simultáneas, tendrás más control sobre la frecuencia de ejecución de la cola y podrás evitar que se ejecuten demasiadas tareas a la vez. También puede evitar la contención del almacén de datos y hacer que los recursos estén disponibles para otras colas o para el procesamiento online.

Para obtener más información sobre este elemento, consulta la descripción comparativa de max_concurrent_dispatches en la referencia de la API Cloud Tasks.

mode

Opcional. Identifica el modo de la cola. El valor predeterminado de este ajuste es push, que identifica una cola como una cola de inserción. Si quieres usar colas de extracción, define el modo como pull.

name

Obligatorio. El nombre de la cola. Es el nombre que especificas cuando llamas a QueueFactory.getQueue().

El nombre de una cola puede contener letras mayúsculas y minúsculas, números y guiones. La longitud máxima de un nombre de cola es de 100 caracteres.

Todas las aplicaciones tienen una cola push llamada "default". Esta cola tiene una frecuencia predefinida de 5 tareas por segundo. Ten en cuenta que esta cola predeterminada no se muestra en el Google Cloud console hasta que se usa o se configura por primera vez. Puedes configurar la cola predeterminada, incluido el cambio de la frecuencia predeterminada, definiendo una cola llamada `default` en tu archivo queue.yaml.

rate (colas de salida)

Obligatorio. La frecuencia con la que las tareas se procesan en esta cola. El valor es un número seguido de una barra y una unidad de tiempo, donde la unidad es s para segundos, m para minutos, h para horas o d para días. Por ejemplo, el valor 5/m indica que las tareas se procesarán a una velocidad de 5 veces por minuto. El valor máximo de rate es 500/s.

Si el número es 0 (como 0/s), la cola se considera "pausada" y no se procesa ninguna tarea.

Para obtener más información sobre este elemento, consulta la descripción comparativa de max_dispatches_per_second en la referencia de la API Cloud Tasks.

retry_parameters

Opcional. Configura los intentos de reintento de las tareas fallidas en las colas de inserción. Esta adición te permite especificar el número máximo de veces que se reintentarán las tareas fallidas en una cola específica. También puedes definir un límite de tiempo para los intentos de reintento y controlar el intervalo entre intentos.

Los parámetros de reintento pueden contener los siguientes subelementos:

task_retry_limit
Número de reintentos. Por ejemplo, si se especifica 0 y la tarea falla, no se volverá a intentar en ningún momento. Si se especifica 1 y la tarea falla, se vuelve a intentar una vez. Si no se especifica este parámetro, la tarea se vuelve a intentar indefinidamente. Si se especifica task_retry_limit con task_age_limit, la tarea se vuelve a intentar hasta que se alcancen ambos límites.
task_age_limit (colas de salida)
El tiempo máximo para volver a intentar una tarea fallida, medido desde la primera vez que se ejecutó la tarea. El valor es un número seguido de una unidad de tiempo, donde la unidad es s para segundos, m para minutos, h para horas o d para días. Por ejemplo, el valor 5d especifica un límite de cinco días después del primer intento de ejecución de la tarea. Si no se especifica este parámetro, la tarea se vuelve a intentar indefinidamente. Si se especifica con task_retry_limit, App Engine vuelve a intentar ejecutar la tarea hasta que se alcancen ambos límites.
min_backoff_seconds (colas de salida)
Número mínimo de segundos que se deben esperar antes de volver a intentar una tarea después de que falle. El valor predeterminado es 0.1.
max_backoff_seconds (colas de salida)
Número máximo de segundos que se debe esperar antes de volver a intentar una tarea después de que falle. El valor predeterminado es 3600.
max_doublings (colas de salida)
Número máximo de veces que se duplicará el intervalo entre reintentos de tareas fallidas antes de que el aumento se convierta en constante. La constante es: 2**max_doublings * min_backoff_seconds. El valor predeterminado es 16.
target (colas de salida)

Opcional. Cadena que indica el nombre de un servicio o una versión, una versión de frontend o un backend en el que se ejecutarán todas las tareas encoladas en esta cola. El valor predeterminado es una cadena vacía.

La cadena se añade al principio del nombre de dominio de tu aplicación al crear la solicitud HTTP de una tarea. Por ejemplo, si el ID de tu aplicación es my-app y defines el destino como my-version-dot-my-service, el nombre de host de la URL será my-version-dot-my-service-dot-my-app.REGION_ID.r.appspot.com.

Si no se especifica el destino, las tareas se invocan en la misma versión de la aplicación en la que se pusieron en cola. Por lo tanto, si has puesto en cola una tarea desde la versión predeterminada de la aplicación sin especificar un destino en la cola, la tarea se invoca en la versión predeterminada de la aplicación. Ten en cuenta que, si la versión predeterminada de la aplicación cambia entre el momento en que se pone en cola la tarea y el momento en que se ejecuta, la tarea se ejecutará en la nueva versión predeterminada.

Si usas servicios junto con un archivo dispatch, la solicitud HTTP de tu tarea se puede interceptar y redirigir a otro servicio.

Se pueden especificar los siguientes elementos para todas las colas de una aplicación:

Elemento Descripción
total_storage_limit

Opcional. Cadena que anula el límite de almacenamiento de cuota predeterminado que está disponible para el almacenamiento de colas de tareas (100 M). Por ejemplo:

total_storage_limit: 1.2G
queue:
  - name: fooqueue

Esta cuota forma parte de la cuota de almacenamiento total de la aplicación (incluidas las cuotas de Datastore y Blobstore).

Si no se especifica ningún sufijo, el número que especifiques se interpretará como bytes. Se admiten los siguientes sufijos:

  • B (bytes)
  • K (kilobytes)
  • M (megabytes)
  • G (gigabytes)
  • T (terabytes)

Si total_storage_limit supera el almacenamiento total en disco disponible para una aplicación, el límite se ajusta al almacenamiento disponible.

Desplegar el archivo de configuración de la cola

El archivo queue.yaml debe estar en el directorio raíz o en el directorio que define el servicio predeterminado.

Para implementar el archivo de configuración de la cola, ejecuta el siguiente comando:

gcloud app deploy queue.yaml

Eliminar colas

Para eliminar una cola, sigue estos pasos:

  1. Quita la definición de la cola del archivo queue.yaml.

  2. Sube el cambio al archivo queue.yaml.

    gcloud app deploy queue.yaml

  3. Elimina la cola en la consola Google Cloud , selecciona la cola y haz clic en Eliminar cola:

    Ir a la página Colas de tareas

Si eliminas una cola de la Google Cloud consola, debes esperar 7 días para volver a crearla con el mismo nombre.