Cette page explique comment migrer le code de files d'attente de retrait depuis les files d'attente de tâches vers Pub/Sub. Pub/Sub est désormais la méthode privilégiée pour effectuer des tâches de file d'attente de retrait dans App Engine.
Si votre application utilise à la fois des files d'attente de retrait et des files d'attente d'envoi, utilisez ce guide pour migrer vos files d'attente de retrait vers Pub/Sub avant de migrer vos files d'attente d'envoi vers le nouveau service de files d'attente d'envoi Cloud Tasks. La migration des files d'attente de retrait après celle des files d'attente d'envoi vers Cloud Tasks n'est pas recommandée, car l'utilisation obligatoire du fichier queue.yaml
est susceptible de provoquer un comportement inattendu avec Cloud Tasks.
Fonctionnalités actuellement indisponibles dans Pub/Sub
Les fonctionnalités de files d'attente de tâches suivantes ne sont actuellement pas disponibles dans Pub/Sub :
- Traitement par lots à l'aide de tags
- Déduplication automatique
Tarifs et quotas
Migrer des files d'attente de retrait vers Pub/Sub peut avoir une incidence sur les tarifs et les quotas de votre application.
Tarifs
Pub/Sub possède sa propre grille tarifaire. Comme pour les files d'attente de tâches, l'envoi de requêtes à votre application App Engine avec Pub/Sub peut entraîner des frais pour votre application.
Quotas
Les quotas Pub/Sub sont différents de ceux des files d'attente de tâches. Comme pour les files d'attente de tâches, l'envoi de requêtes à votre application App Engine à partir de Pub/Sub peut avoir un impact sur vos quotas de requêtes App Engine.
Avant la migration
Cette section explique ce que vous devez faire avant de migrer vos files d'attente d'envoi vers Pub/Sub.
Activer l'API Pub/Sub
Pour activer l'API Pub/Sub, cliquez sur Activer sur l'API Pub/Sub dans la bibliothèque d'API. Si un bouton Gérer s'affiche au lieu du bouton Activer, cela signifie que vous avez précédemment activé l'API Pub/Sub pour votre projet et que vous n'avez pas besoin de réeffectuer cette étape.
Authentifier votre application auprès de l'API Pub/Sub
Vous devez authentifier votre application auprès de l'API Pub/Sub. Cette section traite de l'authentification pour deux cas d'utilisation différents.
Pour développer ou tester votre application localement, nous vous recommandons d'utiliser un compte de service. Pour obtenir des instructions sur la configuration d'un compte de service et sur sa connexion à votre application, consultez la documentation sur la manière d'obtenir et de fournir les identifiants du compte de service manuellement.
Pour déployer votre application sur App Engine, vous n'avez pas besoin de fournir de nouvelle authentification. Les identifiants par défaut de l'application déduisent les informations d'authentification pour les applications App Engine.
Télécharger Google Cloud CLI
Si ce n'est déjà fait, téléchargez et installez Google Cloud CLI pour utiliser gcloud CLI avec l'API Pub/Sub. Exécutez la commande suivante à partir de votre terminal si vous avez déjà installé Google Cloud CLI.
gcloud components update
Importer la bibliothèque cliente Python
Suivez les étapes ci-dessous pour utiliser la bibliothèque cliente Python pour Pub/Sub avec votre application App Engine :Créez un répertoire pour stocker vos bibliothèques tierces, telles que
lib/
:mkdir lib
Copiez les bibliothèques nécessaires.
Nous vous recommandons d'utiliser un fichier d'exigences
pip
au lieu d'installer les bibliothèques une par une à partir de la ligne de commande. Créez un fichierrequirements.txt
dans le même dossier que votre fichierapp.yaml
si vous n'avez pas encore de fichierrequirements.txt
. Ajoutez la ligne suivante :google-cloud-pubsub
Utilisez
pip
(version 6 ou ultérieure) avec l'option-t <directory>
pour copier la bibliothèque Pub/Sub que vous avez spécifiée dans votre fichierrequirements.txt
dans le dossier que vous avez créé à l'étape précédente. Exemple :pip install -t lib -r requirements.txt
Spécifiez la bibliothèque RPC dans la section
libraries
de votre fichierapp.yaml
:libraries: - name: grpcio version: 1.0.0
Utilisez le module
pkg_resources
pour vous assurer que votre application utilise la bonne version de la bibliothèque cliente Python pour Pub/Sub.Créez un fichier
appengine_config.py
dans le même dossier que votre fichierapp.yaml
si vous n'en avez pas déjà un. Ajoutez le code ci-dessous à votre fichierappengine_config.py
:# appengine_config.py import pkg_resources from google.appengine.ext import vendor # Set path to your libraries folder. path = 'lib' # Add libraries installed in the path folder. vendor.add(path) # Add libraries to pkg_resources working set to find the distribution. pkg_resources.working_set.add_entry(path)
Le fichier
appengine_config.py
ci-dessus suppose que le répertoire de travail actuel est l'emplacement du dossierlib
. Dans certains cas, par exemple lors de tests unitaires, le répertoire de travail actuel peut être différent. Pour éviter les erreurs, vous pouvez transmettre de manière explicite le chemin complet du dossierlib
comme suit :import os path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
Importez la bibliothèque cliente Python pour Pub/Sub dans tous les fichiers utilisant des files d'attente de retrait à partir de l'API Task Queues :
from google.cloud import pubsub_v1
Pub/Sub et files d'attente de retrait
Comparatif des fonctionnalités
Pub/Sub envoie des tâches aux nœuds de calcul via une relation éditeur/abonné. Un abonnement pull dans Pub/Sub fonctionne comme une file d'attente de retrait dans les files d'attente de tâches, car l'abonné extrait le message du sujet. Le tableau ci-dessous répertorie les principales fonctionnalités de files d'attente de retrait dans les files d'attente de tâches, ainsi que la fonctionnalité associée aux abonnements pull dans Pub/Sub.
Fonctionnalité de files d'attente de tâches | Fonctionnalité Pub/Sub |
---|---|
Queue | Sujet |
Tâche | Message |
Nœud de calcul | Abonné |
Pour en savoir plus sur l'architecture de Pub/Sub, consultez la page Cloud Pub/Sub : un service de messagerie à l'échelle de Google.
Comparaison des workflows
Vous trouverez ci-dessous une comparaison entre un workflow classique d'une file d'attente de retrait dans les files d'attente de tâches et un workflow d'un abonnement pull dans Pub/Sub.
Workflow de files d'attente de tâches | Workflow Pub/Sub |
---|---|
Vous créez la file d'attente de retrait. | Vous créez le sujet et effectuez la souscription de votre abonné (le nœud de calcul) au sujet. |
Vous créez la tâche et la placez en file d'attente. | Vous créez le message et le publiez dans le sujet. |
Le nœud de calcul loue la tâche. | L'abonné extrait le message du sujet. |
Le nœud de calcul traite la tâche. | L'abonné traite le message. |
Le nœud de calcul supprime la tâche de la file d'attente. | L'abonné accuse réception du message. |
Le bail expire. | Le sujet supprime le message lorsque tous ses abonnés en ont accusé réception. |
Créer des abonnements pull dans Pub/Sub
Vous pouvez utiliser un abonnement pull Pub/Sub de la même façon qu'une file d'attente de retrait des files d'attente de tâches. Les abonnements à un sujet n'expirent pas et peuvent coexister pour plusieurs nœuds de calcul. Cela signifie qu'un message peut être traité par plusieurs nœuds de calcul, ce qui constitue l'un des principaux cas d'utilisation de Pub/Sub. Pour recréer vos files d'attente de retrait de files d'attente de tâches sous la forme d'abonnements pull Pub/Sub, créez un sujet pour chaque nœud de calcul et n'abonnez que celui qui est associé au sujet. Cela permet de garantir que chaque message sera traité par un seul nœud de calcul, comme dans les files d'attente de tâches. Pour en savoir plus sur la création et la gestion des abonnements pull, consultez la page Gérer les sujets et les abonnements.
Supprimer des files d'attente de retrait
Après avoir migré vos files d'attente de retrait de files d'attente de tâches vers des abonnements pull Pub/Sub, supprimez-les des files d'attente de tâches à l'aide de votre fichier queue.yaml
. Nous vous recommandons de supprimer chaque file d'attente de retrait avant de migrer la suivante. Cela évite que votre application duplique le travail reçu du nouvel abonnement pull Pub/Sub pendant que vous migrez vos autres files d'attente de retrait. Notez que la suppression des files d'attente de retrait des files d'attente de tâches une à une plutôt qu'au moyen d'un seul déploiement peut avoir un impact plus élevé sur votre quota de déploiement App Engine.
Une fois que vous avez supprimé toutes les files d'attente de retrait des files d'attente de tâches, vous pouvez omettre le fichier queue.yaml
lors des futurs déploiements de votre application.
Si votre application n'utilise que des files d'attente de retrait, supprimez toutes les références à l'API Task Queues dans votre code. Si votre application utilise à la fois des files d'attente de retrait et des files d'attente d'envoi, vous pouvez supprimer les références à l'API Task Queues présentes dans les fichiers qui n'utilisent que les files d'attente de retrait, ou attendre d'avoir également migré vos files d'attente d'envoi pour supprimer ces références de tous les fichiers.