En esta página se describen las tareas de Cloud Tasks: qué son, cuándo se usan y cómo. 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, imagina que necesitas actualizar una base de datos como parte del procesamiento de una solicitud de un 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, y la tarea persiste hasta que se acaba ejecutado con éxito. Según tu configuración inicial, la cola también puede sirve como control de flujo de despacho. 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 algunas circunstancias excepcionales, es posible que una tarea se ejecute varias veces, por lo que tu código debe garantizar que la ejecución repetida no tenga efectos secundarios dañinos. Los 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 proyecto de Google Cloud.
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, ubicado en cualquier extremo HTTP genérico, según cómo se configura la tarea. Este extremo podría estar en Cloud Run Functions, Cloud Run, GKE Compute Engine, o incluso un servidor web local, basado en cómo se configura 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.
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 las siguientes plataformas de App Engine entornos:
- Entornos de ejecución de segunda generación del entorno estándar de App Engine
- Entorno flexible de App Engine
Los usuarios de entornos de ejecución de primera generación de App Engine que actualmente usan La API de lista de tareas en cola puede migrar Cloud Tasks. Para obtener más información, consulta Migra desde los servicios agrupados en paquetes heredados. Los usuarios de entornos de ejecución de primera generación de App Engine que no usan el servicio de tareas en paquetes puede actualizarse a 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 en App Engine. Por lo tanto, todas las filas que se segmentan para los controladores de App Engine deben tener una app de App Engine. Los controladores deben ejecutarse en la región donde se ejecuta la app de App Engine. Esta región también sirve como el parámetro LOCATION_ID para tus solicitudes de Cloud Tasks.
Las tareas se enrutan según cómo se realiza la tarea (o, con menos frecuencia, según la cola en sí). de la configuración. Las colas envían solicitudes a una tasa confiable y configurable. Garantizan la ejecución confiable de las tareas. Si se realiza de forma correcta, todos los trabajadores deben enviar un código de respuesta HTTP (200-299) al servicio Cloud Tasks, en esta instancia antes de un plazo según el escalamiento de instancias tipo de servicio: 10 minutos para el ajuste de escala automático o hasta 24 horas para ajuste de escala manual. Si se envía una respuesta diferente o no se envía ninguna respuesta, se reintenta la tarea.
Debido a que los controladores son parte de App Engine, Cloud Tasks servicio en sí puede hacer gran parte de la administración del proceso de la tarea, los trabajadores de arriba y abajo en relación con el tráfico y borrar tareas cuando el proyecto se completó.
Regiones admitidas por objetivo
Si tu objetivo es un extremo HTTP/S, Cloud Tasks está disponible en todas las regiones compatibles de Google Cloud.
Si tu objetivo es una aplicación de App Engine ubicada en tu proyecto actual, haz lo siguiente:
Una tarea orientada a App Engine solo se puede crear en la región de App Engine del proyecto.
Un proyecto de Google Cloud solo puede contener una aplicación de App Engine. La región donde se encuentra la aplicación de App Engine no se puede cambiar una vez que la aplicación fue creada.
App Engine es regional, lo que significa que la infraestructura que se ejecuta La app se ubica en una región específica. Si deseas distribuir el procesamiento y las filas en varias regiones, debes segmentar un extremo HTTP/S.
Si no usas App Engine como destino, no es necesario implementa una app de App Engine, y puedes inhabilitar cualquier App de App Engine.
Workflows
El flujo de trabajo general es el siguiente:
- Creas un trabajador para que procese las tareas.
- Creas una cola.
- Creas tareas de manera programática y las agregas a la cola.
- 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.
- Las tareas se le pasan al trabajador.
- El trabajador procesa la tarea.
- 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 que indica que el trabajo asociado con el la tarea se completó correctamente o falló. |
reintentar | 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 Google Tasks están disponibles con Cloud Monitoring.
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 hace un muestreo cada 60 segundos. Luego del muestreo, los datos no son visibles durante un máximo de 120 segundos. |
queue/task_attempt_count Cantidad de intentos de la tarea DELTA ,
INT64 ,
1
|
Es el recuento de la cantidad de tareas que la cola intentó enviar, desglosado por código de respuesta de la tarea.
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 |