Questa pagina descrive come utilizzare l'API Deferred, uno dei servizi in bundle legacy, con il runtime Python 3 per l'ambiente standard. La tua app può accedere ai servizi in bundle tramite l'SDK dei servizi App Engine per Python 3.
Panoramica
In precedenza, il pacchetto Deferred google.appengine.ext.deferred
dipendeva dal webapp framework in Python 2. Poiché il webapp framework è stato rimosso nell'SDK dei servizi App Engine per Python 3, devi apportare alcune modifiche durante l'upgrade della tua app Python 2 a Python 3.
Abilitazione dell'API Deferred
Per abilitare l'API Deferred per Python 3, non devi più impostare
builtins.deferred app.yaml file.
Per abilitare l'API, devi passare use_deferred=True nella chiamata a wrap_wsgi_app().
Somiglianze e differenze
Per impostazione predefinita, l'API Deferred per Python 3 utilizza lo stesso URL /_ah/queue/deferred
e la stessa coda predefinita
di Python 2. Tieni presente che per le app che eseguono la migrazione a Cloud Tasks, la coda predefinita
non viene creata automaticamente
e la libreria delle attività differite non è disponibile.
Se la tua app utilizza l'endpoint predefinito /_ah/queue/deferred, l'utilizzo di
deferred.defer() in Python 3
rimane lo stesso di
Python 2.
Se la tua app utilizza un URL personalizzato per l'esecuzione delle attività differite, devi apportare alcune modifiche perché la classe TaskHandler nel modulo deferred per Python 2 è stata rimossa nella versione Python 3 di questa API.
Per impostare un URL personalizzato per l'esecuzione delle attività differite, l'app può sostituire il metodo
post o il metodo run_from_request nella classe
deferred.Handler
(in precedenza deferred.TaskHandler in Python 2) e passare il parametro environ
che rappresenta un dizionario contenente i parametri della richiesta WSGI. Il metodo post può quindi essere
chiamato dall'endpoint personalizzato (come mostrato negli esempi di Python 3).
L'utilizzo end-to-end dell'API Deferred di Python 3, come il routing delle richieste e
l'accesso al environ dizionario,
dipende dal framework web a cui l'app sta eseguendo la migrazione. Confronta le modifiche al codice apportate dall'esempio di Python 2 agli esempi di Python 3 nelle sezioni seguenti.
Esempi di Python 3
L'esempio seguente mostra come eseguire un'attività differita utilizzando un endpoint predefinito e un endpoint personalizzato in un'app Flask e in un'app Django.
Flask
Django
Senza alcun framework
Esempi di codice
Per visualizzare gli esempi di codice completi di questa guida, consulta GitHub.