Esta página muestra cómo crear un controlador de tareas de App Engine, el
código de 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.
Las solicitudes de lista de tareas en cola de App Engine se envían desde la dirección IP 0.1.0.2
.
Consulta también el
Rango de IP para solicitudes enviadas al entorno de App Engine.
C#
Go
Java
Node.js
PHP
Python
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 plazo de 60 minutos tiempo de espera.
Si tu controlador no cumple con el plazo, la cola supone que la tarea falló y vuelve a intentarlo.
Leer encabezados de solicitud de tareas de App Engine
Solicitudes enviadas a tu controlador de App Engine por medio de Cloud Tasks tienen encabezados especiales, que contienen información específica de la tarea que el controlador quieran usar.
Estos encabezados se configuran internamente. Si alguno de estos encabezados está presente en una una solicitud de usuario externo a tu app, estas se reemplazan por las internas excepto por las solicitudes de los administradores que accedieron a la aplicación, que son establecer 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 my-task-id en el nombre completo de la tarea. por ejemplo, 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ó la 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 de veces que la tarea se ejecutó y recibió una respuesta del controlador. Debido a que Cloud Tasks borra la tarea una vez que se recibe una respuesta correcta, todas las respuestas anteriores del controlador son fallas. Este número no incluye las fallas ocasionadas por la falta de instancias disponibles. Ten en cuenta que X-AppEngine-TaskExecutionCount puede ser igual a X-AppEngine-TaskRetryCount si se actualiza antes de que se intente una ejecución. |
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 enumerados anteriormente, puede se da por sentado que la solicitud es 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, tanto la cola como el controlador de tareas se ejecutan en el mismo proyecto de Google Cloud. El tráfico se encripta durante el transporte y nunca abandona los centros de datos de Google. No puedes configurar el protocolo de forma explícita (por ejemplo, HTTP o HTTPS). Sin embargo, la solicitud al controlador aparecerá como usan el protocolo HTTP.
Las tareas pueden enviarse a controladores de tareas seguros, controladores de tareas no seguros y, en los tiempos de ejecución admitidos, URI restringidas con login: admin
.
Dado que las tareas no se ejecutan como ningún usuario, no se pueden enviar a los URIs.
restringido con login: required
.
Además, los envíos de tareas no 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.