Présentation des files d'attente de tâches

Cette page définit les files d'attente de tâches, et décrit quand et comment les utiliser. Les files d'attente de tâches permettent aux applications d'effectuer des travaux, appelés tâches, de manière asynchrone et hors d'une requête d'utilisateur. Si une application doit exécuter des travaux en arrière-plan, elle ajoute des tâches aux files d'attente de tâches. Les tâches sont exécutées ultérieurement, par des services de nœud de calcul.

Le service de file d'attente de tâches est conçu pour les opérations asynchrones. Il n'offre pas de garanties solides quant à la planification de livraison des tâches et n'est donc pas adapté aux applications interactives dans lesquelles un utilisateur attend le résultat.

Files d'attente d'envoi et files d'attente de retrait

Les files d'attente de tâches peuvent être de deux types : envoi et retrait. Le service de file d'attente de tâches distribue les requêtes de tâches aux services de nœud de calcul de manière différente selon le type de file d'attente.

Les files d'attente d'envoi exécutent des tâches en transmettant des requêtes HTTP aux services de nœud de calcul App Engine. Ils envoient ces requêtes à un rythme fiable et régulier, et garantissent une exécution fiable des tâches. Étant donné que vous pouvez contrôler le rythme d'envoi des tâches à partir de la file d'attente, vous pouvez superviser le comportement des nœuds de calcul en matière de scaling, et donc contrôler également vos coûts.

Les tâches étant exécutées en tant que requêtes destinées aux services App Engine, elles sont soumises à des délais rigoureux. Les tâches gérées par des services de scaling automatique doivent s'achever en dix minutes. Les tâches gérées par des services de scaling de base et manuel peuvent durer jusqu'à 24 heures.

Les files d'attente de retrait ne sont pas compatibles avec PHP 5.

Toutes les tâches de la file d'attente sont exécutées de manière asynchrone. L'application qui crée la tâche la transfère à la file d'attente. L'application d'origine ne reçoit pas de notification indiquant si la tâche a été terminée ou si elle a abouti.

Si un nœud de calcul ne parvient pas à traiter une tâche, le service de file d'attente de tâches procure à la file d'attente un mécanisme de répétition, qui permet d'effectuer de nouvelles tentatives un certain nombre de fois.

Cas d'utilisation

Files d'attente d'envoi

Une opération "lente" constitue un cas typique d'utilisation de la file d'attente d'envoi. Considérons un système de messagerie de réseau social. Chaque fois qu'un utilisateur envoie un message, le réseau doit mettre à jour les abonnés de l'expéditeur. Cela peut prendre beaucoup de temps. À l'aide d'une file d'attente d'envoi, l'application peut mettre une tâche en file d'attente pour chaque message dès son arrivée, pour ensuite la transférer vers un nœud de calcul à des fins de traitement. Lorsque le nœud de calcul reçoit la requête de tâche, il peut récupérer la liste des abonnés de l'expéditeur et mettre à jour la base de données pour les y ajouter. Pour rendre le nœud de calcul encore plus efficace, une autre tâche d'envoi peut être mise en file d'attente pour chaque mise à jour de la base de données.

Les files d'attente d'envoi sont également utilisées pour les tâches planifiées. Imaginez une application qui mette en œuvre une campagne publicitaire. Un groupe de tâches écrites pour envoyer des e-mails peut être ajouté à une file d'attente d'envoi avec des instructions spécifiant de retenir les tâches jusqu'à une heure ultérieure donnée. Lorsque l'échéance arrive, le service de file d'attente de tâches commence à envoyer les requêtes d'exécution des tâches.

Étape suivante