Cette page explique comment utiliser l'API Deferred, l'un des anciens services groupés, avec l'environnement d'exécution Python 3 pour l'environnement standard. Votre application peut accéder aux services groupés via le SDK des services App Engine pour Python 3.
Présentation
Auparavant, le package différée google.appengine.ext.deferred dépendait du framework webapp dans Python 2. Étant donné que l'environnement logiciel webapp a été supprimé dans le SDK des services App Engine pour Python 3, vous devez apporter quelques modifications lors de la mise à niveau de votre application Python 2 vers Python 3.
Activer l'API Deferred
Pour activer l'API Deferred pour Python 3, vous n'avez plus besoin de définir builtins.deferred sur on dans le fichier app.yaml. Pour activer l'API, vous devez transmettre use_deferred=True dans l'appel à wrap_wsgi_app().
Similitudes et différences
Par défaut, l'API Deferred pour Python 3 utilise la même URL /_ah/queue/deferred et la même file d'attente par défaut que dans Python 2. Notez que pour les applications qui migrent vers Cloud Tasks, la file d'attente par défaut n'est pas créé automatiquement et la bibliothèque de tâches différées n'est pas disponible.
Si votre application utilise le point de terminaison /_ah/queue/deferred par défaut, l'utilisation de deferred.defer() dans Python 3 reste identique à Python 2.
Si votre application utilise une URL personnalisée pour l'exécution de tâches différées, vous devez apporter des modifications, car la classe TaskHandler du module deferred pour Python 2 a été supprimée dans la version Python 3 de cette API.
Pour définir une URL personnalisée pour l'exécution de tâches différées, l'application peut remplacer la méthode post ou run_from_request dans la classe deferred.Handler (anciennement deferred.TaskHandler dans Python 2) et transmettre le paramètre environ qui représente un dictionnaire contenant des paramètres de requête WSGI. La méthode post peut ensuite être appelée à partir du point de terminaison personnalisé (comme illustré dans les exemples Python 3).
L'utilisation de bout en bout de l'API Deferred Python 3, telle que le routage des requêtes et l'accès au dictionnaire environ, dépend du framework Web vers lequel l'application migre. Comparez les modifications de code apportées à partir de l'exemple Python 2 aux exemples Python 3 des sections suivantes.
Exemples Python 3
L'exemple suivant montre comment exécuter une tâche différée à l'aide d'un point de terminaison par défaut, ainsi que d'un point de terminaison personnalisé dans une application Flask et une application Django.
Flask
Django
Sans framework
Exemples de code
Pour afficher les exemples de code complets de ce guide, consultez GitHub.