Créer des files d'attente d'envoi

Cette page explique comment créer et personnaliser une file d'attente d'envoi et comment examiner le contenu d'une file d'attente.

Utiliser un fichier de configuration de file d'attente pour créer des files d'attente

Pour traiter une tâche, vous devez l'ajouter à une file d'attente. App Engine fournit une file d'attente d'envoi par défaut, nommée default, configurée et prête à être utilisée avec les paramètres par défaut. Si vous le souhaitez, vous pouvez simplement ajouter toutes vos tâches à la file d'attente par défaut, sans avoir à créer et configurer d'autres files d'attente.

Pour ajouter des files d'attente ou changer la configuration par défaut, modifiez le fichier de configuration de file d'attente de votre application, que vous transférerez ensuite vers App Engine. Vous pouvez créer jusqu'à 10 files d'attente pour les applications gratuites, et jusqu'à 100 files d'attente pour les applications utilisant la facturation. Les files d'attente ne peuvent pas être créées dynamiquement.

Ce fichier de configuration de file d'attente définit deux files d'attente :

queue:
- name: queue-blue
  target: v2.task-module
  rate: 5/s

- name: queue-red
  rate: 1/s

Pour importer le fichier :

gcloud app deploy queue.yaml

Toutes les tâches ajoutées à queue-blue sont envoyées au module cible v2.task-module. Le taux d'actualisation de queue-red passe de 5/s à 1/s. Les tâches seront retirées de la file d'attente et envoyées à leur cible à raison d'une tâche par seconde.

Si vous supprimez une file d'attente, vous devez attendre environ sept jours avant de créer une file d'attente portant le même nom.

De nombreux autres paramètres peuvent être ajoutés au fichier de configuration pour personnaliser le comportement d'une file d'attente d'envoi. Pour en savoir plus, reportez-vous à la documentation de référence sur le fichier de configuration de file d'attente.

Définir le taux de traitement de la file d'attente d'envoi

Vous pouvez contrôler la vitesse de traitement des tâches dans chaque file d'attente en définissant d'autres directives, telles que rate, bucket_size et max_concurrent_requests.

La file d'attente de tâches utilise des token buckets (seaux à jetons) pour contrôler le taux d'exécution des tâches. Chaque file d'attente nommée comprend un bucket qui contient des jetons dont le nombre maximal est spécifié par la valeur bucket_size, ou au maximum 5 jetons si vous ne spécifiez pas la taille du bucket.

Chaque fois que l'application exécute une tâche, un jeton est supprimé du bucket. L'application continue de traiter des tâches de la file d'attente jusqu'à ce que le bucket n'ait plus de jetons. App Engine ajoute des jetons dans le bucket en fonction du rate que vous avez spécifié pour la file d'attente.

Si la file d'attente contient des tâches à traiter et que son bucket contient des jetons, App Engine traite simultanément autant de tâches qu'il y a de jetons. Cela peut entraîner des rafales de traitement, ce qui consomme des ressources système et concurrence les requêtes servant les utilisateurs.

Si vous souhaitez empêcher l'exécution simultanée d'un trop grand nombre de tâches ou éviter les conflits dans le datastore, utilisez max_concurrent_requests.

L'exemple suivant montre comment définir max_concurrent_requests pour limiter les tâches, et comment ajuster la taille et le débit du bucket en fonction des besoins de votre application et des ressources disponibles :

queue:
- name: queue-blue
  rate: 20/s
  bucket_size: 40
  max_concurrent_requests: 10

Définir des limites de stockage pour toutes les files d'attente

Vous pouvez vous servir du fichier de configuration de file d'attente pour définir la quantité totale d'espace de stockage que les données de tâche peuvent utiliser sur l'ensemble des files d'attente. Pour définir la limite de stockage totale, incluez l'élément total_storage_limit au premier niveau :

# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
  rate: 35/s

La valeur est un nombre suivi d'une unité : B pour les octets, K pour les kilo-octets, M pour les mégaoctets, G pour les gigaoctets et T pour les téraoctets. Par exemple, la valeur 100K spécifie une limite de 100 kilo-octets. Si l'ajout d'une tâche risque de provoquer le dépassement de la limite autorisée pour le stockage, la demande d'ajout de la tâche à la file d'attente échoue. La limite par défaut est de 500M (500 mégaoctets) pour les applications gratuites. Pour les applications facturées, il n'y a pas de limite tant que vous n'en définissez pas une explicitement. Vous pouvez utiliser cette limite pour protéger votre application contre une erreur de programmation fork bomb dans laquelle chaque tâche ajoute plusieurs autres tâches au cours de son exécution.

Si votre application reçoit des erreurs pour un quota insuffisant lors de l'ajout de tâches, il peut être utile d'augmenter la limite de stockage total. Si vous utilisez cette fonctionnalité, il est vivement recommandé de définir une limite correspondant au stockage requis sur plusieurs jours de tâches. Cela permet aux files d'attente d'être temporairement sauvegardées et de continuer à accepter de nouvelles tâches tout en résolvant celles en attente, tout en étant protégées contre les erreurs de programmation.

Surveiller des files d'attente dans la console GCP

La page "Files d'attente de tâches" de la console GCP comporte des informations sur toutes les files d'attente de tâches de votre application.

  1. Accédez à la page "File d'attente de tâches" dans la console GCP et sélectionnez l'onglet "Files d'attente d'envoi" dans la barre de menu en haut de la page.

    Accéder à l'onglet Files d'attente d'envoi

  2. L'onglet Files d'attente d'envoi répertorie toutes les files d'attente de l'application. Cliquez sur un nom de file pour afficher la page Détails de la file de tâches, où vous pouvez voir toutes les tâches de la file sélectionnée.

Étape suivante

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python 2