Referencia de queue.yaml

Las aplicaciones que utilizan el SDK de App Engine para administrar las listas de tareas en cola definen estas colas mediante un archivo de configuración denominado queue.yaml. Puedes utilizar queue.yaml para configurar tanto las listas de aplicaciones en colas como las listas de extracción. Este archivo de configuración es opcional para las listas de aplicaciones en cola que tienen una cola predeterminada. Las listas de extracción deben configurarse específicamente en queue.yaml.

Ejemplo

A continuación, se menciona un ejemplo básico que define una cola nombrada y anula la frecuencia de procesamiento predeterminada:

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

A continuación, se menciona un ejemplo más complejo de una configuración queue.yaml que demuestra la configuración de la cantidad de intentos de tareas y la modificación de la frecuencia 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 no contiene ninguna cola nombrada o puede contener más colas nombradas. Cada definición de cola puede especificar los siguientes elementos:

Elemento Descripción
bucket_size (listas de aplicaciones en cola)

Opcional. Una lista de tareas en cola utiliza el algoritmo depósito de token para controlar la frecuencia de ejecución de la tarea. Cada cola nombrada tiene un depósito de token que puede contener una cantidad de tokens igual al máximo especificado por el valor bucket_size. Cada vez que la aplicación ejecuta una tarea, se quita un token del depósito. Continúas procesando las tareas en la cola hasta que el depósito de la cola se queda sin tokens. App Engine rellena el depósito con tokens nuevos de forma continua según la frecuencia que hayas especificado para la cola.

El tamaño del depósito limita la rapidez con la que se procesa la cola cuando existen muchas tareas en la cola y la frecuencia es alta. El valor máximo para el tamaño del depósito es 500. Esto te permite tener una frecuencia alta, por lo que el procesamiento comienza poco después de que se pone en cola una tarea, pero aun así, limita el uso de recursos cuando muchas tareas se ponen en cola en un corto período.

Si no especificas bucket_size para una cola, el valor predeterminado es 5. Te recomendamos establecer un valor mayor, porque el tamaño predeterminado podría ser demasiado pequeño para muchos casos prácticos: el tamaño recomendado es la frecuencia de procesamiento dividida por 5 (frecuencia/5).

max_concurrent_requests (listas de aplicaciones en cola)

Opcional. Establece la cantidad máxima de tareas que pueden ejecutarse de manera simultánea desde la cola especificada. El valor es un número entero. Según la configuración predeterminada, el límite es 1,000 tareas por cola. El límite superior recomendado es 5,000 tareas por cola. Ten en cuenta que las colas pueden avanzar lentamente cuando se crean por primera vez o si han estado inactivas por un tiempo.

La restricción de la cantidad de tareas simultáneas te brinda más control sobre la frecuencia de ejecución de la cola y puede 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 el procesamiento en línea.

mode

Opcional. Identifica el modo de cola. El valor predeterminado para esta configuración es push, que identifica una cola como una lista de aplicaciones en cola. Si deseas utilizar listas de extracción, establece el modo en pull.

name

Obligatorio. El nombre de la cola.

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

Todas las aplicaciones tienen una lista de aplicaciones en cola con un nombre predeterminado. Esta cola tiene una frecuencia de ajuste predeterminado de 5 tareas por segundo, pero puedes cambiar esta frecuencia; para ello, define una cola predeterminada en queue.yaml. Si no configuras una cola predeterminada en queue.yaml, la cola predeterminada no se muestra en Google Cloud Platform Console hasta que se la utiliza por primera vez. Puedes personalizar la configuración de esta cola. Para ello, define una cola con el nombre default.

rate (listas de aplicaciones en cola)

Obligatorio. Con qué frecuencia se procesan las tareas en esta cola. El valor es un número seguido por una barra y una unidad de tiempo; 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 con una frecuencia de 5 veces por minuto. El valor máximo para rate es 500/s.

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

retry_parameters

Opcional. Configura los próximos intentos para las tareas con errores en las listas de aplicaciones en cola. Esto permite especificar la cantidad máxima de veces para reintentar las tareas con errores en una cola específica. También puedes establecer un límite de tiempo para reintentar y controlar el intervalo entre intentos.

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

task_retry_limit
En realidad, es un límite general sobre la cantidad máxima de reintentos para una tarea. Si se especifica 0 o 1, y la tarea falla, no se reintenta en absoluto. Si se especifica con task_age_limit, se reintenta la tarea hasta que se hayan alcanzado ambos límites. Si no se especifica este parámetro, la tarea se reintenta indefinidamente.
task_age_limit (listas de aplicaciones en cola)
El límite de tiempo para reintentar una tarea con errores, medido desde la primera ejecución de la tarea. El valor es un número seguido por una unidad de tiempo; 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 hayan alcanzado ambos límites.
min_backoff_seconds (listas de aplicaciones en cola)
La cantidad mínima de segundos que se espera antes de reintentar una tarea después del error. El valor predeterminado es 0.1.
max_backoff_seconds (listas de aplicaciones en cola)
La cantidad máxima de segundos que se espera antes de reintentar una tarea después del error. El valor predeterminado es 3600.
max_doublings (listas de aplicaciones en cola)
La cantidad máxima de veces que se puede reintentar el intervalo entre las tareas con errores se duplicará antes de que el aumento se vuelva constante. La constante es: 2**max_doublings * min_backoff_seconds. El valor predeterminado es 16.
target (listas de aplicaciones en cola)

Opcional. Una string que da nombre a un servicio/una versión, una versión frontend o un backend en que se ejecutarán todas las tareas puestas en cola para esta cola. El valor predeterminado es una string vacía.

La string se agrega al nombre del dominio de la aplicación cuando se construye una solicitud HTTP para una tarea. Por ejemplo, si el ID de la aplicación es my-app y estableces el destino my-version.my-service, el nombre de host de la URL se establecerá como my-version.my-service.my-app.appspot.com.

Si no se especifica el destino, las tareas se invocan en la misma versión de la aplicación donde 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 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 la tarea se pone en cola y el momento en que se ejecuta, la tarea se ejecutará en la versión predeterminada nueva.

Si utilizas servicios junto con un archivo de despacho, la solicitud HTTP de tu tarea podría ser interceptada y reenviada a otro servicio.

Los siguientes elementos pueden especificarse para todas las colas dentro de una aplicación:

Elemento Descripción
total_storage_limit

Opcional. Una string que anula el límite de almacenamiento de cuota predeterminado que está disponible para el almacenamiento taskqueue (100M). Por ejemplo:


total_storage_limit: 1.2G
queue:
  - name: fooqueue

Esta cuota es parte de la cuota de almacenamiento total de la aplicación (incluidas las cuotas del almacén de datos y de blobstore).

Si no se especifica ningún sufijo, el número que especificas 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 del disco que está disponible para una aplicación, se restringe el límite.

Implementar el archivo de configuración de cola

El archivo queue.yaml debe alojarse en el directorio del código fuente con el código de la aplicación, por ejemplo, con el archivo .go.

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

gcloud

gcloud app deploy queue.yaml

appcfg

Si instalas el SDK original de App Engine, puedes ejecutar:

appcfg.py update_queues [YOUR_APP_DIR]

Borrar colas

Para borrar una cola, haz lo siguiente:

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

  2. Sube el cambio a tu archivo queue.yaml.

    gcloud app deploy queue.yaml
    
  3. Borra la cola en GCP Console, selecciona la cola y haz clic en Borrar cola:

    Ir a la página de listas de tareas en cola

Si borras una cola de GCP Console, debes esperar 7 días antes de volver a crearla con el mismo nombre.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go