En esta página se describe qué son las tareas y las colas de Cloud Tasks, y cuándo y cómo usarlas. Cloud Tasks te permite separar partes del trabajo que se pueden realizar de forma independiente, fuera del flujo principal de tu aplicación, y enviarlas para que se procesen de forma asíncrona mediante controladores que crees. Estas partes independientes del trabajo se denominan tareas. Por ejemplo, necesitas actualizar una base de datos como parte del procesamiento de una solicitud de usuario, pero las actualizaciones pueden llevar mucho tiempo. Si delegas ese detalle como una tarea, podrás volver de la solicitud más rápido.
La tarea descargada se añade a una cola, que conserva la tarea hasta que se ejecuta correctamente o se agota el número de reintentos, tras lo cual se elimina. En función de la configuración inicial, la cola también puede actuar como control de flujo de envío. Crea y configura la cola, que luego gestiona el servicio Cloud Tasks. Una vez que se añaden las tareas, la cola las envía y se asegura de que tus trabajadores las procesen de forma fiable. El servicio se encarga de las complejidades asociadas a ese proceso, como los costes de latencia de cara al usuario, los fallos del servidor, las limitaciones de consumo de recursos y la gestión de reintentos.
Cloud Tasks se ha diseñado para ofrecer una entrega "al menos una vez". Es decir, si una tarea se añade correctamente, la cola la entregará al menos una vez. En algunas circunstancias poco frecuentes, es posible que se ejecuten varias tareas, por lo que tu código debe asegurarse de que no haya efectos secundarios perjudiciales si se ejecuta varias veces. Los controladores deben ser idempotentes.
Las tareas constan de un nombre único, información de configuración y, de manera opcional, datos de la petición inicial, llamados "carga útil" y necesarios para procesar la petición. Como la carga útil se envía en el cuerpo de la petición, las tareas que incluyen cargas útiles deben usar POST o PUT como su método HTTP.
Para acceder al servicio Cloud Tasks mediante la API Cloud Tasks , debes tener un Google Cloud proyecto.
Funciones
Con Cloud Tasks, puedes enviar elementos de trabajo asíncronos con los siguientes controles:
- Programar horas de entrega específicas
- Gestionar porcentajes de entrega
- Configurar el comportamiento de reintento
- Acceder a tareas concretas de una cola y gestionarlas
- Habilitar la anulación de tareas duplicadas
Flujo de trabajo general
El flujo de trabajo general es el siguiente:
- Creas un trabajador para procesar las tareas.
- Creas una cola.
- Creas tareas de forma programática y las añades a la cola.
- El servicio Cloud Tasks devuelve un OK a la aplicación de origen. Esto indica que la tarea se ha escrito correctamente en el almacenamiento de Cloud Tasks, lo que hace que la solicitud de creación de tareas sea altamente disponible y duradera.
- Las tareas se transfieren al trabajador.
- El trabajador procesa la tarea.
- Para completar la secuencia, el trabajador devuelve un código de estado 2xx al servicio Cloud Tasks.
Una vez que la tarea se ha transferido a la cola, no se ponen datos a disposición de la solicitud inicial.
Casos prácticos
Estos son algunos de los usos más habituales:
- Acelerar los tiempos de respuesta de los usuarios delegando en un trabajador operaciones en segundo plano que pueden ser lentas, como las actualizaciones de bases de datos
- Conservar peticiones en el contexto de incidentes de producción imprevistos
- Ayudar a suavizar los picos de tráfico eliminando las tareas que no están orientadas al usuario del flujo de usuario principal
- Gestionar las tarifas de llamadas a APIs de terceros
Colas de Cloud Tasks con destinos HTTP
En el caso de los destinos HTTP genéricos, el servicio Cloud Tasks reenvía la solicitud de tarea al trabajador, ubicado en cualquier endpoint HTTP genérico, en función de cómo se configure la tarea. Este endpoint puede estar en Cloud Run Functions, Cloud Run, GKE, Compute Engine o incluso en un servidor web local, en función de cómo se configure la tarea. Estas colas envían solicitudes a una velocidad fiable y configurable. Aseguran la ejecución fiable de las tareas. Si se completan correctamente, todos los trabajadores deben enviar un código de respuesta HTTP (200-299) al servicio Cloud Tasks antes de que finalice el tiempo de espera predeterminado de 10 minutos, con un máximo de 30 minutos. Si se envía una respuesta diferente, o no hay respuesta, se vuelve a intentar la tarea.
El destino debe gestionar el escalado de los trabajadores y limpiar las tareas una vez que se hayan completado.
Si tu destino requiere autenticación, debes configurar dos cuentas de servicio: una para tu aplicación (el cliente) y otra para la propia cola. Ambas cuentas deben tener los permisos necesarios y se debe incluir un identificador de la cuenta de servicio del cliente en la solicitud de tarea. Consulta más información sobre cómo crear tareas de destino HTTP.
Colas de Cloud Tasks con destinos de App Engine
Cloud Tasks es compatible con los siguientes entornos de App Engine:
- Runtimes de segunda generación del entorno estándar de App Engine
- Entorno flexible de App Engine
Los usuarios de los tiempos de ejecución de primera generación de App Engine que usen la API Task Queue pueden migrar a Cloud Tasks. Para saber cómo hacerlo, consulta Migrar de servicios antiguos agrupados. Los usuarios de los entornos de ejecución de primera generación de App Engine que no utilicen el servicio de tareas agrupado pueden cambiar a los entornos de ejecución de segunda generación para usar Cloud Tasks.
En el caso de los destinos de App Engine, el servicio Cloud Tasks también reenvía la solicitud de tarea al controlador, pero este trabajador se encuentra en App Engine. Por lo tanto, todas las colas que tengan como destino controladores de App Engine deben tener una aplicación de App Engine. Los controladores deben ejecutarse en la región en la que se ejecute la aplicación de App Engine. Esta región también sirve como parámetro LOCATION_ID para tus solicitudes de Cloud Tasks.
Las tareas se enrutan en función de cómo se haya configurado la tarea (o, con menos frecuencia, la propia cola). Las colas envían solicitudes a una velocidad fiable y configurable. Garantizan la ejecución fiable de las tareas. Si se completan correctamente, todos los workers deben enviar un código de respuesta HTTP (200-299) al servicio Cloud Tasks. En este caso, antes de una fecha límite basada en el tipo de escalado de instancias del servicio: 10 minutos para el escalado automático o hasta 24 horas para el escalado manual. Si se envía una respuesta diferente o no se envía ninguna, se vuelve a intentar realizar la tarea.
Como los controladores forman parte de App Engine, el propio servicio Cloud Tasks puede gestionar gran parte del proceso de la tarea, aumentar y reducir el número de trabajadores en función del tráfico y eliminar las tareas cuando se completan.
Regiones admitidas por destino
Si tu destino es un endpoint HTTP/S, Cloud Tasks está disponible en todas las regiones admitidas Google Cloud para Cloud Tasks.
Si el destino es una aplicación de App Engine ubicada en tu proyecto actual, haz lo siguiente:
Una tarea dirigida a App Engine solo se puede crear en la región de App Engine del proyecto.
Un proyecto solo puede contener una aplicación de App Engine, y la región en la que se encuentra la aplicación de App Engine no se puede cambiar una vez que se ha creado. Google Cloud
App Engine es regional, lo que significa que la infraestructura que ejecuta tu aplicación está ubicada en una región concreta. Si quieres distribuir los recursos de computación y las colas en varias regiones, debes orientar la publicidad a un endpoint HTTP/S.
Si no usas App Engine como destino, no tienes que desplegar una aplicación de App Engine y puedes inhabilitar cualquier aplicación de App Engine que ya tengas.
Anulación de tareas duplicadas
La desduplicación de tareas se consigue asignando un nombre único a cada tarea. Si intentas crear una tarea con un nombre que ya existe en la cola, la solicitud de creación fallará. De esta forma, se evita que se añada la misma tarea más de una vez.
Cloud Tasks recuerda los nombres de las tareas hasta 24 horas después de que se hayan eliminado de la cola. Si intentas volver a crear una tarea con el mismo nombre durante este periodo, la solicitud también fallará.
Si no proporcionas un nombre al crear una tarea, Cloud Tasks generará un nombre único para ella, por lo que no será necesario eliminar duplicados.
Términos clave
Los siguientes términos describen las funciones clave de Cloud Tasks.
Término | Definición |
---|---|
cu | Conjunto de tareas con el mismo tipo de destino gestionadas por una sola configuración. |
tipo de destino | 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 el que Cloud Tasks ha enviado la tarea a su destino. |
respuesta de intento | Respuesta de un trabajador que indica si el trabajo asociado a la tarea se ha completado correctamente o ha fallado. |
Reintentar | Varios intentos de ejecutar una tarea. El número de reintentos se define mediante parámetros de reintento. |
límites de velocidad | Los límites de velocidad de una cola. |
Observabilidad
Puede monitorizar y analizar la actividad y el crecimiento de Cloud Tasks mediante las herramientas de monitorización, registro y diagnóstico que proporciona Google Cloud Observability. Para obtener más información, consulta Observabilidad en Cloud Tasks.