Cette page montre comment créer un gestionnaire de tâches App Engine, le code de calcul qui gère une tâche App Engine. La file d'attente Cloud Tasks envoie des requêtes HTTP à votre gestionnaire de tâches. Une fois le traitement effectué, le gestionnaire doit envoyer un état HTTP compris entre 200
et 299
à la file d'attente. Toute autre valeur indique que la tâche a échoué et que la file d'attente la relance.
Les requêtes de file d'attente de tâches App Engine sont envoyées à partir de l'adresse IP 0.1.0.2
.
Reportez-vous également à la plage d'adresses IP pour les requêtes envoyées à l'environnement App Engine.
C#
Python
Java
PHP
Go
Node.js
Ruby
Délais avant expiration
Les tâches App Engine ont des délais avant expiration spécifiques qui dépendent du type de scaling du service qui les exécute.
Pour les services de nœud de calcul s'exécutant dans l'environnement standard :
- Scaling automatique : le traitement de la tâche doit s'achever en 10 minutes.
- Scaling manuel et de base : les requêtes peuvent durer jusqu'à 24 heures.
Pour les services de nœuds de calcul exécutés dans l'environnement flexible: tous les types ont un délai avant expiration de 60 minutes.
Si le gestionnaire ne respecte pas le délai, la file d'attente suppose que la tâche a échoué et la relance.
Lire les en-têtes de requête de tâche App Engine
Les requêtes envoyées à votre gestionnaire App Engine par une file d'attente Cloud Tasks comportent des en-têtes spéciaux, qui contiennent des informations spécifiques que votre gestionnaire peut vouloir utiliser.
Ces en-têtes sont définis en interne. Si l'un de ces en-têtes est présent dans une requête d'utilisateur externe adressée à votre application, il est remplacé par un en-tête interne, à l'exception des requêtes des administrateurs connectés de l'application, qui sont autorisés à définir des en-têtes à des fins de test.
Les requêtes de tâches App Engine contiennent toujours les en-têtes suivants :
Header | Description |
---|---|
X-AppEngine-QueueName |
Nom de la file d'attente. |
X-AppEngine-TaskName |
Nom "court" de la tâche ou, si aucun nom n'a été spécifié lors de la création, identifiant unique généré par le système. Il s'agit de la valeur my-task-id dans le nom complet de la tâche. Par exemple, task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id . |
X-AppEngine-TaskRetryCount |
Nombre de tentatives d'exécution de la tâche. Pour la première tentative, cette valeur est définie sur 0 . Ce chiffre inclut les tentatives lorsque la tâche a échoué en raison d'un manque d'instances disponibles et n'a jamais atteint la phase d'exécution. |
X-AppEngine-TaskExecutionCount |
Nombre de fois que la tâche a été exécutée et a reçu une réponse du gestionnaire. Étant donné que Cloud Tasks supprime la tâche une fois qu'une réponse positive a été reçue, toutes les réponses précédentes du gestionnaire sont des échecs. Ce chiffre n'inclut pas les échecs dus à un manque d'instances disponibles. Notez que X-AppEngine-TaskExecutionCount peut être égal à X-AppEngine-TaskRetryCount s'il est mis à jour avant toute tentative d'exécution. |
X-AppEngine-TaskETA |
Heure de planification de la tâche spécifiée en secondes depuis le 1er janvier 1970. |
Si le gestionnaire de requêtes trouve l'un des en-têtes répertoriés ci-dessus, il peut valider qu'il s'agit d'une requête Cloud Tasks.
En outre, les requêtes Cloud Tasks peuvent contenir les en-têtes suivants :
En-tête | Description |
---|---|
X-AppEngine-TaskPreviousResponse |
Code de réponse HTTP de la tentative précédente. |
X-AppEngine-TaskRetryReason |
Raison de la nouvelle tentative d'exécution de la tâche. |
X-AppEngine-FailFast |
Indique qu'une tâche échoue immédiatement si une instance existante n'est pas disponible. |
Routage cible
Dans les tâches App Engine, la file d'attente et le gestionnaire de tâches s'exécutent dans le même projet Cloud. Le trafic est chiffré pendant le transport et ne quitte jamais les centres de données Google. Comme ce trafic est acheminé via un mécanisme de communication interne à Google, vous ne pouvez pas définir explicitement le protocole (par exemple, HTTP ou HTTPS). Toutefois, la requête envoyée au gestionnaire apparaîtra pour avoir utilisé le protocole HTTP.
Des tâches peuvent être distribuées à des gestionnaires de tâches sécurisés, des gestionnaires de tâches non sécurisés et, dans les environnements d'exécution compatibles, des URI dont l'accès est limité avec login: admin
.
Étant donné que les tâches ne sont pas exécutées en tant qu'utilisateur, elles ne peuvent pas être distribuées à des URI dont l'accès est limité avec login: required
.
Les envois de tâches ne suivent pas non plus les redirections.
Étapes suivantes
- Apprenez-en davantage sur les tâches dans la référence de l'API RPC.
- Découvrez-en plus sur les tâches dans la documentation de référence de l'API REST.