En esta página, se explican las diferencias entre el uso de
API de Cloud Tasks para administrar colas
y usar la carga de una instancia de Cloud Tasks
queue.yaml
para lograr los mismos fines. También se analizan algunos de los riesgos de mezclar los mecanismos y cómo solucionar los problemas más comunes.
Introducción
La API de Cloud Tasks ofrece una interfaz independiente de App Engine al servicio Task Queue de App Engine. Como parte de esa interfaz, permite administrar colas,
incluido hacerlo a través de la consola o el comando gcloud
. Colas que son
creadas por la API de Cloud Tasks sean accesibles desde el SDK de App Engine y
viceversa. Para mantener la compatibilidad, es posible usar el archivo de configuración que usa el SDK de App Engine, queue.yaml
, para crear y configurar colas que se usarán a través de la API de Cloud Tasks. Sin embargo, combinar configuraciones
mediante un archivo con configuración mediante la API de Cloud Tasks puede producir consecuencias inesperadas.
Riesgos de mezclar queue.yaml
con los métodos de administración de colas de Cloud Tasks
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 detenidas. Por lo tanto, 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 que se crearon en las llamadas de Cloud Tasks están inhabilitadas.
Considera la siguiente situación:
- Llama a
CreateQueue
para crear una cola llamada "cloud-tasks-queue". Crea un archivo
queue.yaml
con el siguiente contenido:queue: - name: queue-yaml-queue
¿Cuál es el estado actual de este proyecto? La cola llamada "cloud-tasks-queue" y cualquier otra cola que haya existido previamente quedan en estado DISABLED
, y la cola llamada "queue-yaml-queue" está en estado RUNNING
.
Este comportamiento podría resultar sorprendente si creas colas mediante la API de Cloud Tasks. Las instrucciones que se brindan a continuación explican cómo reanudar una cola inhabilitada.
Del mismo modo, si una cola está inhabilitada en la API de Cloud Tasks, pero luego aparece en un archivo queue.yaml
que se subió, esa cola se reanuda.
Si se borra una cola con el método DeleteQueue
y, luego, aparece en un
archivo queue.yaml
, la carga de queue.yaml
puede fallar porque los nombres de las colas no
pueden reutilizarse varios días después de la eliminación.
Recomendaciones
Si eres nuevo en Cloud Tasks o App Engine, usa la API de Cloud Tasks exclusivamente para administrar tus colas y evitar el uso de queue.yaml
por completo. Los métodos de administración de colas de Cloud Tasks le dan al usuario más opciones en cuanto a la creación, actualización y eliminación de colas.
Sin embargo, si ya eres usuario de queue.yaml
, solo debes considerar cambiar a métodos de administración de colas si comprendes los riesgos de mezclar queue.yaml
con los métodos de administración de colas de Cloud Tasks.
Para evitar que los usuarios mezclen métodos de gestión de tareas, una opción es
crear una aplicación web o una herramienta de línea de comandos que todos los usuarios deban usar para crear, actualizar,
y borrar colas. Si la herramienta usa la cola de Cloud Tasks
métodos de administración, o queue.yaml
, es un detalle de implementación de la herramienta
por lo que los usuarios no deben preocuparse. Si los usuarios deben usar la herramienta, puedes garantizar que no se mezclen por error los métodos de administración de colas de Cloud Tasks y el uso de queue.yaml
.
Para aplicar de manera forzosa el uso de esa herramienta, puedes otorgarle roles de administrador de colas
y exigir que los usuarios se autentiquen para usar la herramienta. Para obtener más información sobre el acceso
administración, consulta
Configuración de colas seguras.
Depuración
Puedes inspeccionar los registros de auditoría de actividad del administrador para recuperar el historial de cambios de configuración de colas, que incluye las operaciones de creación, actualización y eliminación de colas.
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)'
Por ejemplo, si una cola existente se inhabilita mediante una carga en queue.yaml
, aparecerá el mensaje "Se inhabilitó la cola '[QUEUE_NAME]'" en el registro de auditoría mediante el método com.google.appengine.legacy.queue_updated
.
Cómo reanudar una cola inhabilitada con la carga de un archivo queue.yaml
Si mezclas queue.yaml
con los métodos de administración de colas de Cloud Tasks, 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. Ten en cuenta que si ya habías establecido un
y procesamiento de lenguaje natural
rate
en la configuración de queue.yaml
para la cola,
ResumeQueue
restablece la cola al valor predeterminado rate
. Esto se refleja en el
maxDispatchesPerSecond
de la respuesta a ResumeQueue
.
Cuotas
Si usas queue.yaml
para crear tus colas de forma predeterminada, puedes crear un máximo de 100. Las colas creadas con la API de Cloud Tasks tienen un máximo predeterminado de 1,000. 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, supongamos que creas algunas colas con queue.yaml
y, luego, obtienes un aumento de la cuota de 2,000. Si, luego, usas el método de la API de Cloud Tasks para crear más colas, obtendrás errores de cuota. Para solucionar esto,
enviar una solicitud a través de la opción Editar cuotas en la página Cuotas de
la consola de Google Cloud.
Información adicional sobre los métodos de administración de colas de Cloud Tasks
Configuración y demora en el inicio de las colas
Cuando se cambia la configuración de las colas, es posible que la modificación tarde varios minutos en aplicarse. Para
Por ejemplo, después de llamar a CreateQueue
o UpdateQueue
, pueden pasar varios minutos
antes de que puedas llamar correctamente a CreateTask
en esa cola.
Cloud Tasks y la 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.
Si la cola default
aún 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 dedefault
. - Cuando se llama a
CreateQueue
oUpdateQueue
para crear la coladefault
.
A fin de preservar la compatibilidad con App Engine, Cloud Tasks aplica las siguientes restricciones:
- Si se crea una cola llamada "default", debe ser una cola que use tareas de App Engine.
- Una vez creadas, los usuarios no pueden borrar la cola
default
.
En la API de Cloud Tasks, lo siguiente también se aplica a la cola default
:
- La API de Cloud Tasks no crea de forma automática la cola
default
ni ninguna otra. - Al igual que con cualquier otra cola, cuando se llama a
GetQueue
en la coladefault
, se produce un error no encontrado si se realiza la llamada antes de crear la cola. - De manera similar, la cola
default
no aparece en el resultado deListQueues
antes de su creación. - Puedes cambiar la configuración de la cola
default
con el Llamada deUpdateQueue
.
¿Qué sigue?
- Consulta los documentos de referencia para conocer los métodos disponibles en la API de RPC de Cloud Tasks.
- Consulta los métodos disponibles en la API de REST de Cloud Tasks en los documentos de referencia.
- Obtén más información sobre
queue.yaml
.