Referencia de queue.yaml

ID de región

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 ni a una provincia, aunque algunos IDs de región pueden parecerse a códigos de país y provincia de uso habitual. En el caso de las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En el caso de las aplicaciones creadas antes de esta 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 utiliza para crear y configurar casi todas las colas de tareas (de salida o de entrada) que usa tu aplicación. Todas las aplicaciones de App Engine incluyen una cola de salida preconfigurada automáticamente llamada default. Aunque no crees la cola default tú mismo, puedes añadir otras colas o cambiar la configuración de la cola default mediante el archivo queue.yaml.

Para configurar colas de salida, puedes usar queue.yaml o los métodos de gestión de colas de Cloud Tasks, pero no ambos a la vez. Si combinas el método de subida de queue.yaml con los métodos de gestión de colas, pueden producirse resultados inesperados, por lo que no se recomienda.

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

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 utiliza el algoritmo de segmento de token para controlar la tasa de ejecución de tareas. Cada cola con nombre tiene un segmento de token que contiene tokens, hasta el máximo especificado por el bucket_size valor. Cada vez que tu aplicación ejecuta una tarea, se quita un token del depósito. Las tareas de la cola se siguen procesando hasta que el depósito de la cola se queda sin tokens. App Engine rellena el depósito con tokens nuevos de forma continua en función de la tasa que hayas especificado para la cola.

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

Si no especificas bucket_size para una cola, el valor predeterminado es 5. Te recomendamos que definas un valor mayor ya que el tamaño predeterminado puede ser demasiado pequeño para muchos casos prácticos. Por ejemplo, puedes determinar el tamaño del depósito en función de la tasa 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 de 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 tasa de ejecución de la cola y podrás evitar que se ejecuten demasiadas tareas a la vez. También puedes evitar la contención de Datastore 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 de Cloud Tasks.

mode

Opcional. Identifica el modo de la cola. Este ajuste tiene el valor predeterminado push que identifica una cola como una cola de salida. Para usar colas para tareas extraídas, define el modo como pull.

name

Obligatorio. El nombre de la cola. Este 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 del nombre de una cola es de 100 caracteres.

Todas las aplicaciones tienen una cola de salida llamada default. Esta cola tiene una tasa predefinida de 5 tareas por segundo. Ten en cuenta que esta cola predeterminada no se muestra en la Google Cloud console consola de Cloud hasta que se usa o se configura por primera vez. Puedes configurar la cola predeterminada, incluido el cambio de la tasa predeterminada, definiendo una cola llamada `default` en el 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 tasa de 5 veces por minuto. El valor máximo de rate es 500/s.

Si el número es 0 (por ejemplo, 0/s), se considera que la cola está "en pausa" 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 de Cloud Tasks.

retry_parameters

Opcional. Configura los intentos de reintento de las tareas fallidas en las colas de salida. Esta adición te permite especificar el número máximo de veces que se deben reintentar 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
El número de reintentos. Por ejemplo, si 0 se especifica y la tarea falla, la tarea no se reintenta en absoluto. Si se especifica 1 y la tarea falla, la tarea se reintenta una vez. Si no se especifica este parámetro, la tarea se reintenta indefinidamente. Si se especifica task_retry_limit con task_age_limit, la tarea se reintenta hasta que se alcancen ambos límites.
task_age_limit (colas de salida)
El límite de tiempo para reintentar 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 reintenta indefinidamente. Si se especifica con task_retry_limit, App Engine reintenta la tarea hasta que se alcancen ambos límites.
min_backoff_seconds (colas de salida)
El número mínimo de segundos que se deben esperar antes de reintentar una tarea después de que falle. El valor predeterminado es 0.1.
max_backoff_seconds (colas de salida)
El número máximo de segundos que se deben esperar antes de reintentar una tarea después de que falle. El valor predeterminado es 3600.
max_doublings (colas de salida)
El número máximo de veces que se duplicará el intervalo entre los 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. Una cadena que indica un servicio o una versión, una versión de frontend o un backend, en el que se deben ejecutar todas las tareas puestas en cola en esta cola. El valor predeterminado es la cadena vacía.

La cadena se antepone al 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 se definirá como 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 pusiste en cola una tarea desde la versión predeterminada de la aplicación sin especificar un destino en la cola, la tarea se invocará 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 de distribución, la solicitud HTTP de tu tarea puede interceptarse y redirigirse a otro servicio.

Los siguientes elementos se pueden especificar para todas las colas de una aplicación:

Elemento Descripción
total_storage_limit

Opcional. Una cadena que anula el límite de almacenamiento de cuota predeterminado que está disponible para el almacenamiento de colas de tareas (100 MB). 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 interpreta como bytes. Se admiten los siguientes sufijos:

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

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

Implementar el archivo de configuración de la cola

El archivo queue.yaml debe residir 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 Google Cloud consola de Cloud. Para ello, 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 de Cloud, debes esperar 7 días antes de volver a crearla con el mismo nombre.