Descripción general de Cloud Tasks

En esta página, se describen las tareas y colas de Cloud Tasks: qué son, cuándo se usan y cómo. Cloud Tasks te permite separar los trabajos que se pueden realizar de forma independiente, fuera del flujo principal de tu aplicación, y enviarlos para que se procesen de manera asíncrona mediante los controladores que creas. Estas partes de trabajo independientes se denominan tareas. Por ejemplo, necesitas actualizar una base de datos como parte del procesamiento de una solicitud de un usuario, pero las actualizaciones pueden llevar mucho tiempo. Descargar esos detalles como una tarea te permite mostrar desde la solicitud más rápido.

La tarea descargada se agrega a una cola, que persiste hasta que se ejecuta correctamente. La cola también puede actuar como un control de flujo de despacho, en función de tu configuración inicial. Debes crear y configurar la cola que luego el servicio Cloud Tasks administrará. Una vez que se agregan tareas, la cola las despacha y se asegura de que tus trabajadores las procesen de manera fiable. El servicio se encarga de las complejidades asociadas con ese proceso, como los costos de latencia para el usuario, las fallas del servidor, las limitaciones de consumo de recursos, la administración de reintentos.

Las tareas en sí están compuestas por un nombre único, información de configuración y, opcionalmente, los datos que sean necesarios para la solicitud inicial (denominados la "carga útil"), que se usarán para procesar la solicitud. Dado que la carga útil se envía en el cuerpo de la solicitud, las tareas que incluyen cargas útiles deben usar POST o PUT como método HTTP.

Los usuarios de los entornos de ejecución de primera generación del entorno estándar de App Engine deben acceder al servicio de Cloud Tasks mediante la API de lista de tareas en cola de App Engine. Para obtener más información sobre cómo usar este método, consulta la documentación de Java 8, Python 2.7, Go 1.9 o PHP 5.5. Los usuarios de entornos de ejecución de segunda generación de un entorno estándar de App Engine, un entorno flexible y los de otras plataformas ahora pueden usar la API de Cloud Tasks.

Para acceder al servicio Cloud Tasks con la API de Cloud Tasks, debes tener un proyecto que contenga una aplicación de App Engine que aloje las listas de tareas en cola Cloud Tasks que crees. Esta aplicación se encuentra en una región específica que sirve como el parámetro LOCATION_ID para tus solicitudes de Cloud Tasks, así que es importante que la recuerdes. Ten en cuenta que dos ubicaciones, llamadas europe-west y us-central en los comandos de App Engine, se llaman, respectivamente, europe-west1 y us-central1 en los comandos de Cloud Tasks. La app actúa como ubicación para las listas de tareas en cola que cree el desarrollador. El servicio Cloud Tasks subyacente en sí se ejecuta en esa ubicación.

Casos de uso

Los casos prácticos más comunes incluyen los siguientes:

  • Acelerar los tiempos de respuesta para los usuarios delegando a un trabajador las operaciones de segundo plano potencialmente lentas, como las actualizaciones de bases de datos
  • Preservar las solicitudes en el contexto de incidentes de producción imprevistos
  • Quitar del flujo de usuarios principal las tareas no orientadas al usuario, a fin de ayudar a que el tráfico sea más fluido durante los picos de actividad
  • Administra las tarifas de llamadas a la API de terceros

Colas de Cloud Tasks con destinos HTTP

En el caso de destinos HTTP genéricos, el servicio de Cloud Tasks reenvía la solicitud de tarea al trabajador, ubicada en cualquier extremo HTTP genérico, como Cloud Functions, Cloud Run, GKE, Compute Engine o incluso un servidor web local, según cómo se configura la tarea. Estas colas envían solicitudes a una velocidad confiable y configurable. Garantizan una ejecución de tareas confiable. Cuando el proceso finaliza correctamente, todos los trabajadores deben enviar un código de respuesta HTTP (200-299) al servicio de Cloud Tasks antes de una fecha límite de 10 minutos. Si se envía una respuesta diferente o no se envía ninguna respuesta, se reintenta la tarea.

Colas basadas en HTTP

El objetivo debe administrar el escalamiento de los trabajadores y la limpieza de las tareas una vez que se completan.

Si tu objetivo requiere autenticación, debes configurar dos cuentas de servicio: una para tu aplicación, el cliente y una para la cola en sí. Se deben otorgar los permisos requeridos a ambas cuentas y se debe incluir un identificador para la cuenta de servicio de cliente en la solicitud de tarea. Consulta Crea tareas de destino HTTP para obtener más información.

Colas de Cloud Tasks con destinos de App Engine

En el caso de los destinos de App Engine, el servicio de Cloud Tasks también reenvía la solicitud de tarea al trabajador, que se encuentra dentro de App Engine, según cómo se configura la tarea (o, por lo general, la cola). Estas colas envían solicitudes a una tasa confiable y configurable. Garantizan la ejecución confiable de tareas: cuando se completan correctamente, todos los trabajadores deben enviar un código de respuesta HTTP (200-299) al servicio de Cloud Tasks, en esta instancia antes de una fecha límite basada en el escalamiento de instancias Tipo de servicio: 10 minutos para ajuste de escala automático o hasta 24 horas para el escalamiento manual. Si se envía una respuesta diferente o no se envía ninguna respuesta, se reintenta la tarea.

Colas basadas en App Engine

Debido a que los controladores son parte de App Engine, el servicio de Cloud Tasks puede realizar gran parte de la administración de procesos para la tarea, lo que aumenta y disminuye la escala de los trabajadores en relación al tráfico y borra las tareas cuando se completan.

Flujos de trabajo

El flujo de trabajo general es el siguiente:

  1. Creas un trabajador para que procese las tareas.
  2. Creas una cola.
  3. Creas tareas de manera programática y las agregas a la cola.
  4. El servicio Cloud Tasks muestra un mensaje de aceptación a la aplicación originadora. Esto indica que la tarea se escribió con éxito en el almacenamiento de Cloud Tasks, por lo que la solicitud de creación de tareas tiene alta disponibilidad y durabilidad.
  5. Las tareas se le pasan al trabajador.
  6. El trabajador procesa la tarea.
  7. Para completar la secuencia, el trabajador muestra un código de estado 2xx al servicio Cloud Tasks.

Una vez que la tarea se entregó a la cola, la solicitud inicial no recibe más datos.

Funciones

Con Cloud Tasks, puedes despachar elementos de trabajo asíncronos con los siguientes controles:

  • Programar horas de entrega específicas
  • Administrar las frecuencias de envío
  • Configurar el comportamiento de reintento
  • Acceder y administrar tareas individuales en una cola
  • Habilitar la anulación de duplicación de tareas

Términos

En la siguiente tabla, se muestran algunos términos clave que describen aspectos del comportamiento de Cloud Tasks.

Término Definición
cola Un conjunto de tareas con el mismo tipo de orientación administrado por una sola configuración.
tipo de objetivo Dónde y cómo se procesa una tarea
trabajador Un servicio que procesa tareas
intento Un intento de ejecutar una tarea
envío de intento El momento en que Cloud Tasks envía la tarea a su objetivo
respuesta de intento Una respuesta de un trabajador, en la que se indica que el trabajo asociado con la tarea se realizó correctamente o falló
retry Múltiples intentos de ejecutar una tarea la cantidad de reintentos se define en la configuración de reintentos
límites de frecuencia Los límites de frecuencia de una cola

Métricas

Las siguientes métricas predefinidas de Cloud Tasks están disponibles mediante Stackdriver.

Tipo de métrica
Nombre visible
Categoría, tipo, unidad
Etiquetas
de descripción
api/request_count
Solicitudes a la API
DELTA,INT64,1
Cantidad de llamadas a la API de Cloud Tasks
api_method: El método de API al que se llama (p. ej., CreateTask).
response_code: El código de respuesta canónico en forma de string (p. ej., “ok”)
queue/depth
Profundidad de la cola de versión BETA
GAUGE, INT64, 1
La cantidad de tareas en la cola. Se tomaron muestras cada 60 segundos. Después del muestreo, los datos no se podrán ver durante un máximo de 120 segundos.
queue/task_attempt_count
Cantidad de intentos de la tarea
DELTA, INT64, 1
La cantidad de intentos de la tarea, desglosada por código de respuesta
response_code: Código de respuesta canónico en forma de string (p. ej., “ok”)
queue/task_attempt_delays
Retrasos de intento de la tarea
DELTA, DISTRIBUTION, ms
El retraso entre el momento programado para cada intento y el momento en el que realmente se llevó a cabo