Usa queue.yaml para administrar colas

Si bien puedes usar un queue.yaml archivo para administrar colas, la combinación de métodos de administración de colas puede generar resultados inesperados. En esta guía, se explican los riesgos de combinar estos métodos y se muestra cómo resolver problemas de configuración comunes.

La API de Cloud Tasks proporciona una interfaz independiente al servicio Task Queue de App Engine. Con esta interfaz, puedes administrar colas a través de la Google Cloud consola o el Google Cloud CLI. Las colas que creas con la API de Cloud Tasks son accesibles desde el SDK de App Engine, una colección de APIs específicas de la plataforma, herramientas independientes y archivos de tiempo de ejecución, y las colas creadas con el SDK de App Engine son accesibles desde la API de Cloud Tasks.

Para mantener la compatibilidad, puedes usar queue.yaml, el archivo de configuración del SDK de App Engine, para crear y configurar colas para la API de Cloud Tasks. Sin embargo, la administración de colas con este archivo y la API de Cloud Tasks puede causar problemas que se detallan en esta guía.

Antes de comenzar

Si eres nuevo en Cloud Tasks o App Engine, usa la API de Cloud Tasks exclusivamente para administrar tus colas y evita usar queue.yaml. Los métodos de administración de colas de Cloud Tasks te brindan más opciones para crear, actualizar y borrar colas.

Si ya usas queue.yaml, considera cambiar a los métodos de administración de colas de Cloud Tasks solo si comprendes los riesgos de combinar métodos de administración de colas.

Aplica un método de administración de colas

Para evitar la combinación de métodos de administración de colas, puedes crear una app web o una herramienta de línea de comandos para crear, actualizar y borrar colas. Si esa herramienta usa métodos de administración de colas de Cloud Tasks o queue.yaml es un detalle de implementación que los usuarios no necesitan conocer. Si aplicas el uso de la herramienta, puedes asegurarte de que no haya una combinación inadvertida de métodos. Otorga la función de Cloud Tasks Queue Admin Identity and Access Management (IAM) a la herramienta y exige que los usuarios se autentiquen. Para obtener más información sobre la administración de acceso, consulta Configura la seguridad de las colas.

Demoras en la configuración de las colas

Los cambios en la configuración de las colas pueden tardar varios minutos en aplicarse. Por ejemplo, si llamas a CreateQueue o UpdateQueue, podrían transcurrir varios minutos antes de que puedas llamar a CreateTask sobre esa cola con éxito.

Cola default de App Engine

La cola de App Engine denominada default recibe un tratamiento especial en el SDK de App Engine y en la API de Cloud Tasks.

¿Cuándo se crea la cola default?

Si la cola default no existe, se creará en las siguientes situaciones:

  • Cuando se agrega la primera tarea a la cola default mediante el SDK de App Engine
  • Cuando se sube un archivo queue.yaml que especifica una cola default
  • Cuando se llama a CreateQueue o UpdateQueue para crear la cola default
¿Qué restricciones aplica Cloud Tasks?

Para preservar la compatibilidad con App Engine, Cloud Tasks aplica las siguientes restricciones con respecto a la default cola:

  • La API de Cloud Tasks no crea automáticamente la default cola ni ninguna otra.
  • Si se crea una cola llamada default, debe ser una cola que use tareas de App Engine.
  • Si llamas a GetQueue en la cola default, se muestra un error not found si la cola aún no existe.
  • La cola default no aparece en el ListQueues resultado hasta que se crea.
  • Puedes modificar la configuración de la cola default con la UpdateQueue llamada.
  • Después de crearla, no puedes borrar la cola default.

Riesgos de combinar métodos de administración de colas

Para el servicio subyacente, los archivos queue.yaml son definitivos. Si se sube un archivo queue.yaml que omite colas existentes en tu proyecto, sin importar cómo se crearon, esas colas quedan inhabilitadas o se detenidas. Por ejemplo, si usas la API de Cloud Tasks para llamar a CreateQueue o UpdateQueue y, luego, subes un archivo queue.yaml que los omite, las colas quedan inhabilitadas. Luego, deberás reanudar las colas inhabilitadas.

La combinación de métodos de administración de colas puede generar un comportamiento inesperado. Por ejemplo, considera las siguientes situaciones:

Situación 1

Llamas a CreateQueue para crear una cola llamada cloud-tasks-queue y, luego, subes un archivo queue.yaml con el siguiente contenido:

queue:
- name: queue-yaml-queue

Esto genera los siguientes estados de cola:

  • La cola llamada cloud-tasks-queue y cualquier otra cola preexistente están en estado DISABLED.
  • La cola llamada queue-yaml-queue está en estado RUNNING.

Situación 2

Usas la API de Cloud Tasks para inhabilitar una cola, pero luego aparece en un archivo queue.yaml que se subió. Se reanudó la cola.

Situación 3

Borras una cola con el método DeleteQueue y luego aparece en un archivo queue.yaml. Es posible que la carga de queue.yaml falle, ya que los nombres de las colas no pueden reutilizarse durante varios días después de la eliminación.

Depura con registros de auditoría

Puedes inspeccionar los registros de auditoría de actividad del administrador de tu proyecto y recuperar un historial de cambios de configuración de colas, que incluye las operaciones de creación, actualización y eliminación de colas.

Por ejemplo, si una carga de queue.yaml inhabilita una cola existente, puedes ejecutar el siguiente comando para mostrar un Disabled queue QUEUE_NAME mensaje de registro a través del com.google.appengine.legacy.queue_updated método:

gcloud logging read \
  'protoPayload.methodName=
   (com.google.appengine.legacy.queue_created OR
    com.google.appengine.legacy.queue_updated OR
    google.cloud.tasks.v2.CloudTasks.CreateQueue OR
    google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
    google.cloud.tasks.v2.CloudTasks.DeleteQueue)'

Para obtener más información, consulta Lee las entradas de registro.

Reanuda una cola inhabilitada por una carga de queue.yaml

Si mezclas métodos de administración de colas, subir un archivo queue.yaml podría inhabilitar accidentalmente una cola creada a través de la API de Cloud Tasks. Para reanudar la cola, puedes llamar a ResumeQueue sobre la cola o agregarla a queue.yaml y subir el archivo.

Si antes estableciste un procesamiento personalizado rate en la queue.yaml configuración, ResumeQueue restablece la cola a la rate. Esto se refleja en el maxDispatchesPerSecond campo de la respuesta a ResumeQueue.

Resuelve problemas de cuota

Si usas queue.yaml para crear tus colas, tu proyecto tiene una cuota predeterminada para la cantidad máxima de colas que puedes crear. Las colas creadas con la API de Cloud Tasks también tienen una cuota predeterminada. Al igual que en otros casos, la mezcla de los métodos de queue.yaml y la API de Cloud Tasks puede generar resultados inesperados.

Por ejemplo, cuando creas colas con queue.yaml y, luego, recibes un aumento de cuota, si usas la API de Cloud Tasks para crear colas adicionales, es posible que recibas errores de cuota. Para resolver este problema, puedes administrar tus cuotas con la Google Cloud consola. Si deseas obtener más información, consulta Administra tus cuotas con la consola.

¿Qué sigue?