En esta página se muestra cómo crear un controlador de tareas de App Engine, que es el código de trabajador que gestiona una tarea de App Engine. La cola de Cloud Tasks envía solicitudes HTTP al controlador de tareas. Una vez completado el proceso, el controlador debe enviar un código de estado HTTP entre 200
y 299
a la cola. Cualquier otro valor indica que la tarea ha fallado y que la cola vuelve a intentar realizarla.
Las solicitudes de la cola de tareas de App Engine se envían desde la dirección IP 0.1.0.2
.
Consulta también el intervalo de direcciones IP de las 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 escalado del servicio que las ejecuta.
Estos son los valores para los servicios de los trabajadores que se ejecutan en el entorno estándar:
- Escalado automático: el procesamiento de la tarea debe finalizar en 10 minutos.
- Escalado manual y básico: las peticiones pueden ejecutarse durante un máximo 24 horas.
En el caso de los servicios de trabajador que se ejecutan en el entorno flexible, todos los tipos tienen un tiempo de espera de 60 minutos.
Si el controlador no cumple el plazo, la cola asume que la tarea ha fallado y vuelve a intentarlo.
Leer los encabezados de solicitud de tareas de App Engine
Las solicitudes que envía una cola de Cloud Tasks al controlador de App Engine tienen encabezados especiales que contienen información específica de la tarea que puede que el controlador quiera usar.
Estos encabezados se definen internamente. Si alguno de estos encabezados está presente en una solicitud de un usuario externo a tu aplicación, se sustituirá por los internos, excepto en el caso de las solicitudes de administradores que hayan iniciado sesión en la aplicación, que pueden definir encabezados con fines de prueba.
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 "corto" de la tarea o, si no se ha especificado ningún nombre al crearla, un ID único generado por el sistema. Este es el valor de my-task-id en el nombre de la tarea completo. Por ejemplo, task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id . |
X-AppEngine-TaskRetryCount |
Número de veces que se ha vuelto a intentar realizar la tarea. En el primer intento, este valor es 0 . Este número incluye los intentos en los que la tarea ha fallado debido a la falta de instancias disponibles y nunca ha llegado a la fase de ejecución. |
X-AppEngine-TaskExecutionCount |
Número de veces que se ha ejecutado la tarea y ha recibido una respuesta del controlador. Como Cloud Tasks elimina la tarea una vez que se ha recibido una respuesta correcta, todas las respuestas anteriores del controlador son errores. Este número no incluye los errores debidos a 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 ejecutar. |
X-AppEngine-TaskETA |
La hora programada de la tarea, especificada en segundos desde el 1 de enero de 1970. |
Si el controlador de solicitudes encuentra alguno de los encabezados indicados anteriormente, puede asumir que la solicitud es una solicitud 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 vuelve a intentar realizar la tarea. |
X-AppEngine-FailFast |
Indica que una tarea falla inmediatamente si no hay ninguna instancia disponible. |
Rutas de destino
En las tareas de App Engine, tanto la cola como el controlador de tareas se ejecutan en el mismo proyecto. Google Cloud El tráfico se cifra durante el transporte y nunca sale de los centros de datos de Google. No puedes definir explícitamente el protocolo (por ejemplo, HTTP o HTTPS). Sin embargo, la solicitud al controlador parecerá haber usado el protocolo HTTP.
Las tareas se pueden enviar a controladores de tareas seguros, controladores de tareas no seguros y tiempos de ejecución no compatibles. Los URIs se restringen con login: admin
.
Como las tareas no se ejecutan como ningún usuario, no se pueden enviar a URIs restringidas con login: required
.
Los envíos de tareas tampoco siguen las redirecciones.
Siguientes pasos
- Consulta más información sobre las tareas en la referencia de la API RPC.
- Consulta más información sobre las tareas en la referencia de la API REST.