Comprende Cloud Tasks

Con Cloud Tasks, puedes separar los trabajos que se pueden realizar de forma independiente (fuera del flujo principal de la aplicación) y enviarlos para que se procesen de forma asíncrona mediante el uso de controladores que crees. Estos trabajos independientes se denominan tareas. Por ejemplo, debes actualizar una base de datos como parte del procesamiento de una solicitud del usuario, pero las actualizaciones pueden llevar mucho tiempo. La descarga de ese detalle como tarea te permite regresar más rápido de la solicitud.

La tarea descargada se agrega a una cola, lo que mantiene la tarea hasta que se ejecuta con éxito o se agota la cantidad de reintentos, después de lo cual se borra. Según tu configuración inicial, la cola también puede actuar como un control de flujo de envío. Debes crear y configurar la cola que el servicio Cloud Tasks administrará. Una vez que se agregan las tareas, la cola las envía y se asegura de que tus trabajadores las procesen de manera confiable. 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 y la administración de reintentos.

Cloud Tasks está diseñado para brindar una entrega "al menos una vez"; es decir, si se agrega una tarea correctamente, la cola la entregará por lo menos una vez. En ciertas circunstancias excepcionales, es posible ejecutar varias tareas, por lo que tu código debe garantizar que la ejecución repetida no tendrá efectos secundarios dañinos. Tus controladores deben ser idempotentes.

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.

Para acceder al servicio Cloud Tasks con la API de Cloud Tasks, debes tener un Google Cloud proyecto.

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

Flujo de trabajo general

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. Se pasa una tarea 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.

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 los destinos HTTP genéricos, el servicio de Cloud Tasks reenvía la solicitud de tarea al trabajador, ubicada en cualquier extremo HTTP genérico, según la configuración de la tarea. Este extremo podría estar en las funciones de Cloud Run, Cloud Run, GKE, Compute Engine o incluso un servidor web local, según la configuración de la tarea. Estas colas envían solicitudes a una tasa confiable y configurable. Garantizan una ejecución de tarea confiable. Si se ejecutan de forma correcta, todos los trabajadores deben enviar un código de respuesta HTTP (200-299) al servicio de Cloud Tasks antes del plazo de tiempo de espera predeterminado de 10 minutos, con un máximo de 30 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 y el cliente y una para la cola en sí. Se deben otorgar los permisos a ambas cuentas y se debe incluir un identificador para la cuenta de servicio del 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

Cloud Tasks es compatible con los siguientes entornos de App Engine:

  • Entornos de ejecución de segunda generación del entorno estándar de App Engine
  • Entorno flexible de App Engine

Los usuarios de los entornos de ejecución de primera generación de App Engine que usan la API de Task Queue pueden migrar a Cloud Tasks. Para obtener información sobre cómo hacerlo, consulta Migra desde servicios agrupados en paquetes heredados. Los usuarios de los entornos de ejecución de primera generación de App Engine que no usan el servicio de tareas agrupadas en paquetes pueden actualizarse a los entornos de ejecución de segunda generación para usar Cloud Tasks.

En el caso de los objetivos de App Engine, el servicio de Cloud Tasks también reenvía la solicitud de tarea al controlador, pero este trabajador se encuentra dentro de App Engine. Por lo tanto, todas las colas que se dirigen a los controladores de App Engine deben tener una aplicación de App Engine. Los controladores deben ejecutarse en la región en la que se ejecuta la aplicación de App Engine. Esta región también sirve como el LOCATION_ID parámetro para tus solicitudes de Cloud Tasks.

Las tareas se enrutan según la configuración de la tarea (o, con menos frecuencia, de la cola en sí). Las colas envían las solicitudes con una frecuencia confiable que puede configurarse. 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 ajuste de escala 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.

Regiones admitidas por destino

Si tu destino es un extremo HTTP/S, Cloud Tasks está disponible en todas las regiones Google Cloud admitidas para Cloud Tasks.

Si tu destino es una aplicación de App Engine ubicada dentro de tu proyecto actual, ten en cuenta lo siguiente:

Anulación de duplicación de tareas

La anulación de duplicación de tareas se logra asignando un nombre único a una tarea. Si intentas crear una tarea con un nombre que ya existe en la cola, la solicitud de creación fallará. Esto evita que se agregue la misma tarea más de una vez.

Cloud Tasks recuerda los nombres de las tareas hasta 24 horas después de que se borra la tarea de la cola. Si intentas volver a crear una tarea con el mismo nombre durante este tiempo, también se producirá un error en la solicitud.

Si no proporcionas un nombre cuando creas una tarea, Cloud Tasks generará un nombre único para ella, y la anulación de duplicación no es necesaria.

Términos clave

En los siguientes términos, se describen las capacidades clave de Cloud Tasks.

Término Definición
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ó
handler El código de la aplicación (también conocido como trabajador) responsable de procesar tareas. Cuando Cloud Tasks envía una tarea desde la cola, envía una solicitud a un servicio de destino, y el código en ese extremo que recibe y ejecuta la tarea es el controlador.
cola Un conjunto de tareas con el mismo tipo de orientación administrado por una sola configuración.
límites de frecuencia Determina la tasa a la que las tareas pueden ser enviadas por una cola, independientemente de si el envío es un primer intento de tarea o un reintento.
reintentar Múltiples intentos de ejecutar una tarea La cantidad de reintentos se define con parámetros de reintento.
tipo de objetivo Dónde y cómo se procesa una tarea Puedes orientar un extremo HTTP o una aplicación de App Engine.
tarea La unidad de trabajo fundamental que deseas ejecutar de forma asíncrona. Representa un trabajo único e independiente que agregas a una cola para que Cloud Tasks lo procese fuera del flujo principal de la aplicación.
Worker Un servicio que procesa tareas Consulta handler.

Observabilidad

Puedes supervisar y analizar la actividad y el crecimiento de Cloud Tasks con las herramientas de supervisión, registro y diagnóstico que proporciona Google Cloud Observability. Para obtener más información, consulta Observabilidad en Cloud Tasks.