Crea 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 colas

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 tus 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 colas de tu 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:

appcfg/xml

<?xml version="1.0" encoding="UTF-8"?>
  <queue-entries>
    <queue>
      <name>queue-blue</name>
      <target>v2.task-module</target>
    </queue>
    <queue>
      <name>queue-red</name>
      <rate>1/s</rate>
    </queue>
  </queue-entries>
  ```

gcloud/yaml

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

 - name: queue-red
   rate: 1/s

Para subir el archivo, usa lo siguiente:

appcfg/xml

Mac/Linux:

    [PATH_TO_APP_ENGINE_SDK]\bin\appcfg.sh update [YOUR_APP_DIR]

Windows:

    [PATH_TO_APP_ENGINE_SDK]\bin\appcfg.cmd update [YOUR_APP_DIR]

gcloud/yaml

gcloud app deploy queue.yaml

Todas las tareas agregadas a queue-blue se envían al módulo de destino v2.task-module. La frecuencia de actualización de queue-red cambió de 5/s a 1/s. Las tareas se eliminarán de la cola y se enviarán a sus objetivos 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 colas.

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

Puedes controlar la velocidad a la que se procesan las tareas en cada una de tus 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 depósitos de token para controlar la velocidad de ejecución de las tareas. Cada cola nombrada tiene un depósito de token que contiene tokens, hasta el máximo especificado por bucket_size, o un máximo de 5 tokens si no especificas el tamaño del depósito.

Cada vez que tu aplicación ejecuta una tarea, se quita un token del depósito. Tu app continúa procesando tareas de la cola hasta que el depósito se queda sin tokens. App Engine rellena el depósito 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 depósito correspondiente, App Engine procesa de forma simultánea tantas tareas como pueda con los tokens disponibles. Esto puede ocasionar picos de actividad de procesamiento que consumen recursos del sistema y compiten con las solicitudes de servicio del usuario.

Si deseas evitar que se ejecuten demasiadas tareas a la vez o evitar 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 frecuencia del depósito según las necesidades de tu aplicación y los recursos disponibles:

appcfg/xml

<?xml version="1.0" encoding="UTF-8"?>
<queue-entries>
  <queue>
    <name>queue-blue</name>
    <rate>20/s</rate>
    <bucket-size>40</bucket-size>
    <max-concurrent-requests>10</max-concurrent-requests>
  </queue>
</queue-entries>

gcloud/yaml

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

Configura los límites de almacenamiento de todas las colas

Puedes usar tu archivo de configuración de colas 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:

appcfg/xml

<?xml version="1.0" encoding="UTF-8"?>
<queue-entries>
  <total-storage-limit>120M</total-storage-limit>
  <queue>
    <name>queue-blue</name>
    <rate>35/s</rate>
  </queue>
</queue-entries>

gcloud/yaml

# 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 explícitamente. Este límite se puede usar para proteger tu aplicación de un error de programación que produzca una 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 respaldar las colas de manera temporal y seguir aceptando tareas nuevas mientras se realiza el trabajo pendiente, al tiempo que la app se mantiene protegida contra errores de programación que produzcan una bomba fork.

Configura la cantidad máxima de solicitudes simultáneas

Puedes controlar la velocidad de procesamiento mediante la configuración de max_concurrent_requests, que limita la cantidad de tareas que se pueden ejecutar de forma simultánea.

Si la cola de tu aplicación tiene una frecuencia de 20/s y un tamaño de depósito de 40, las tareas de esa cola se ejecutarán a una frecuencia de 20/s y puede haber un pico de actividad de hasta 40/s de forma breve. Esta configuración funciona bien si la latencia de las tareas es relativamente baja. Sin embargo, si la latencia aumenta de manera considerable, se procesarán muchas más tareas de forma simultánea. Esta carga de procesamiento adicional puede consumir instancias adicionales y disminuir la velocidad de la aplicación.

Por ejemplo, supongamos que la latencia normal de las tareas es de 0.3 segundos. Con este valor, se procesarán como máximo 40 tareas en simultáneo. Pero si la latencia de las tareas se incrementa a 5 segundos, no será difícil que se procesen más de 100 tareas al mismo tiempo. Esto hace que la aplicación consuma más instancias para poder procesar las tareas adicionales, con el potencial de disminuir la velocidad de toda la aplicación y de interferir en las solicitudes de los usuarios. Para evitar esta posibilidad, configura max_concurrent_requests en un valor inferior.

Por ejemplo, si configuras max_concurrent_requests en 10, nuestra cola de ejemplo mantiene alrededor de 20 tareas por segundo cuando la latencia es de 0.3 segundos. Cuando la latencia aumenta a más de 0.5 segundos, esta configuración regula la velocidad de procesamiento para garantizar que no se ejecuten más de 10 tareas a la vez.

appcfg/xml

<?xml version="1.0" encoding="utf-8"?>
<queue-entries>
  <queue>
    <name>optimize-queue</name>
    <rate>20/s</rate>
    <bucket-size>40</bucket-size>
    <max-concurrent-requests>10</max-concurrent-requests>
  </queue>
</queue-entries>

gcloud/yaml

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

Supervisa colas en Cloud Console

La página de listas de tareas en cola en Cloud Console muestra información sobre todas las listas de tareas en cola en tu aplicación.

  1. Visita la página de listas de tareas en cola en Cloud Console y selecciona la pestaña de listas de aplicaciones en cola en la barra de menú ubicada en la parte superior de la página.

    Ir a la pestaña Listas de aplicaciones en cola

  2. La pestaña Listas de aplicaciones en cola muestra todas las colas de la aplicación. Cuando se hace clic en el nombre de una cola, aparece la página Detalles de la lista de tareas en cola, en la que se pueden ver todas las tareas de la cola seleccionada.

Próximos pasos