En esta página, se demuestra cómo crear un controlador de tareas de App Engine, el código del trabajador que maneja una tarea de App Engine. La cola de Cloud Tasks envía solicitudes HTTP al controlador de tareas. Cuando el procesamiento se completa con éxito, el controlador debe enviar un código de estado HTTP entre 200
y 299
de nuevo a la cola. Si se envía cualquier otro valor, significa que la tarea tuvo un error, por lo que la cola la reintenta.
C#
Python
Java
PHP
Go
Node.js
Ruby
Tiempos de espera
Las tareas de App Engine tienen tiempos de espera específicos que dependen del tipo de escalamiento del servicio que las ejecuta.
Estas son las opciones en el caso de los servicios trabajadores que se ejecutan en el entorno estándar:
- Escalamiento automático: Las tareas deben terminar de procesarse en 10 minutos.
- Escalamiento manual y básico: Las solicitudes pueden ejecutarse durante un máximo de 24 horas.
En el caso de los servicios trabajadores que se ejecutan en el entorno flexible, todos los tipos tienen un tiempo de espera de 60 minutos.
Si tu controlador no cumple el plazo, la cola reintenta la tarea, ya que da por sentado que no se ejecutó correctamente.
Leer encabezados de solicitud de tareas de App Engine
Las solicitudes enviadas a tu controlador de App Engine por una cola de Cloud Tasks tienen encabezados especiales, que contienen información específica de la tarea que tu controlador podría usar.
Estos encabezados se configuran internamente. Si alguno de estos encabezados está presente en una solicitud de un usuario externo a tu app, se lo reemplaza por un encabezado interno, salvo en el caso de las solicitudes de los administradores de las aplicaciones que hayan accedido a sus cuentas, quienes tienen permitido configurar encabezados para realizar pruebas.
Las solicitudes de tareas de App Engine siempre contienen los siguientes encabezados:
Header | Descripción |
---|---|
X-AppEngine-QueueName |
El nombre de la cola. |
X-AppEngine-TaskName |
El nombre "breve" de la tarea o (si no se especificó un nombre durante su creación) un ID único generado por el sistema. Este es el valor de "my-task-id" en el nombre completo de la tarea: task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id. |
X-AppEngine-TaskRetryCount |
La cantidad de veces que se reintentó esta tarea. Si es el primer intento, el valor es 0 . Este número incluye los intentos en los que la tarea falló debido a la falta de instancias disponibles y nunca llegó a la fase de ejecución. |
X-AppEngine-TaskExecutionCount |
La cantidad total de veces que la tarea recibió una respuesta de un controlador. Dado que Cloud Tasks borra la tarea una vez que se recibe una respuesta en la que se indica que se ejecutó correctamente, todas las respuestas anteriores que envió el controlador fueron ejecuciones con errores. Este número no incluye las veces que la tarea falló debido a que no había instancias disponibles. |
X-AppEngine-TaskETA |
La fecha y hora programadas para la tarea, que se especifica en la cantidad de segundos transcurridos desde el 1 de enero de 1970. |
Si tu controlador de solicitudes encuentra alguno de los encabezados antes mencionados, podrá confiar en que la solicitud proviene de Cloud Tasks.
Además, las solicitudes de Cloud Tasks pueden contener los siguientes encabezados:
Header | Descripción |
---|---|
X-AppEngine-TaskPreviousResponse |
El código de respuesta HTTP del reintento anterior. |
X-AppEngine-TaskRetryReason |
El motivo por el que se volvió a intentar la tarea. |
X-AppEngine-FailFast |
Indica que una tarea falla inmediatamente si no hay una instancia existente disponible. |
Enrutamiento al objetivo
En las tareas de App Engine, la cola y el controlador de tareas se ejecutan dentro del mismo proyecto de Cloud. El tráfico está encriptado durante el transporte y nunca sale de los centros de datos de Google. Dado que este tráfico se transmite mediante un mecanismo de comunicación interno de Google, no puedes configurar el protocolo explícitamente (por ejemplo, HTTP o HTTPS). Sin embargo, parecerá que la solicitud al controlador usó el protocolo HTTP.
Las tareas se pueden enviar a controladores de tareas seguros, controladores de tareas no seguros y, en los entornos de ejecución compatibles, los URI restringidos con login: admin
. Dado que las tareas no se ejecutan como ningún usuario, no pueden enviarse a URI restringidas con login: required
.
Los envíos de tareas tampoco siguen los redireccionamientos.
¿Qué sigue?
- Obtén más información sobre las tareas en la Referencia de la API de RPC.
- Obtén más información sobre las tareas en la referencia de la API de REST.