In questa pagina viene descritto come utilizzare l'API Deferred, uno dei servizi in bundle legacy, con il runtime Python 3 per dell'ambiente standard. L'app può accedere ai servizi in bundle tramite l'SDK per i servizi App Engine per Python 3.
Panoramica
In precedenza, il pacchetto Deferred google.appengine.ext.deferred
dipendeva dal framework webapp in Python 2. Poiché il webapp framework
nell'SDK dei servizi App Engine per Python 3, devi
apporta alcune modifiche quando esegui l'upgrade dell'app Python 2 a Python 3.
Abilitazione dell'API Deferred
Per abilitare l'API Deferred per Python 3, non è più necessario impostare
builtins.deferred
a on
nel file app.yaml
. Per abilitare l'API, devi invece passare
use_deferred=True
nella chiamata a wrap_wsgi_app()
.
Analogie e differenze
Per impostazione predefinita, l'API Deferred per Python 3 utilizza lo stesso URL /_ah/queue/deferred
e la stessa coda predefinita
come in Python 2. Tieni presente che per le app di cui viene eseguita 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 /_ah/queue/deferred
predefinito, utilizzando
deferred.defer()
in Python 3
rimane uguale a
Python 2.
Se la tua app utilizza un URL personalizzato per l'esecuzione di attività differite, devi apportare
alcune modifiche rispetto alla classe TaskHandler
nel modulo deferred
per Python 2
è stato rimosso nella versione Python 3 di questa API.
Per impostare un URL personalizzato per l'esecuzione di attività differite, l'app può eseguire l'override del metodo post
o 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 di 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, ad esempio il routing delle richieste e l'accesso al dizionario environ
, dipende dal framework web a cui viene eseguita la migrazione dell'app. Confronta le modifiche al codice apportate dall'esempio di Python 2 a quelle 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.