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
Si ce n'est pas déjà fait, configurez votre environnement de développement Python pour utiliser une version de Python compatible avec Google Cloud et installez des outils de test pour créer des environnements Python isolés.Les sections suivantes décrivent les étapes de configuration avant de migrer vos files d'attente de retrait 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 les bibliothèques clientes Cloud
Suivez les étapes ci-dessous pour utiliser la bibliothèque cliente Python pour Pub/Sub avec votre application App Engine existante :
Mettez à jour le fichier
app.yaml
. Suivez les instructions correspondant à votre version de Python :Python 2
Pour les applications Python 2, ajoutez les dernières versions de la bibliothèque
grpcio
.Voici un exemple de fichier
app.yaml
:runtime: python27 threadsafe: yes api_version: 1 libraries: - name: grpcio version: latest
Python 3
Pour les applications Python 3, spécifiez l'élément
runtime
dans votre fichierapp.yaml
avec une version de Python 3 compatible. Exemple :runtime: python310 # or another support version
L'environnement d'exécution Python 3 installe automatiquement les bibliothèques. Vous n'avez donc pas besoin de spécifier des bibliothèques intégrées à partir de l'environnement d'exécution Python 2 précédent. Si votre application Python 3 utilise d'autres anciens services groupés lors de la migration, vous pouvez continuer à spécifier les bibliothèques intégrées nécessaires. Sinon, vous pouvez supprimer les lignes inutiles de votre fichier
app.yaml
.Mettez à jour le fichier
requirements.txt
. Suivez les instructions correspondant à votre version de Python :Python 2
Ajoutez les bibliothèques clientes Cloud pour Pub/Sub à votre liste de dépendances dans le fichier
requirements.txt
.google-cloud-pubsub
Exécutez ensuite
pip install -t lib -r requirements.txt
pour mettre à jour la liste des bibliothèques disponibles pour votre application.Python 3
Ajoutez les bibliothèques clientes Cloud pour Pub/Sub à votre liste de dépendances dans le fichier
requirements.txt
.google-cloud-pubsub
App Engine installe automatiquement ces dépendances dans l'environnement d'exécution Python 3 lors du déploiement de l'application. Par conséquent, supprimez le dossier
lib
s'il existe.Pour les applications Python 2, si votre application utilise des bibliothèques intégrées ou copiées, vous devez spécifier ces chemins d'accès dans le fichier
appengine_config.py
, situé dans le même dossier que votre fichierapp.yaml
: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
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 |
---|---|
File d'attente | 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.
Étape suivante
- Documentation de Pub/Sub
- Migrer des files d'attente d'envoi
- Pour accéder à un tutoriel pratique, consultez l'atelier de programmation Migrer des files d'attente de retrait Task Queue depuis App Engine vers Pub/Sub.