En esta página se describe cómo usar la API Deferred, uno de los servicios empaquetados antiguos, con el runtime de Python 3 para el entorno estándar. Tu aplicación puede acceder a los servicios agrupados a través del SDK de servicios de App Engine para Python 3.
Información general
Antes, el paquete Deferred google.appengine.ext.deferred
dependía del framework de aplicaciones web en Python 2. Como el framework webapp se ha quitado del SDK de servicios de App Engine para Python 3, debes hacer algunos cambios al actualizar tu aplicación de Python 2 a Python 3.
Habilitar la API Deferred
Para habilitar la API Deferred en Python 3, ya no es necesario definir builtins.deferred
en on
en el archivo app.yaml
. Para habilitar la API, debes pasar use_deferred=True
en la llamada a wrap_wsgi_app()
.
Similitudes y diferencias
De forma predeterminada, la API Deferred para Python 3 usa la misma URL /_ah/queue/deferred
y la misma cola predeterminada
que en Python 2. Ten en cuenta que, en las aplicaciones que migren a Cloud Tasks, la cola predeterminada no se crea automáticamente y la biblioteca de tareas diferidas no está disponible.
Si tu aplicación usa el endpoint /_ah/queue/deferred
predeterminado, usar deferred.defer()
en Python 3 sigue siendo igual que en Python 2.
Si tu aplicación usa una URL personalizada para ejecutar tareas diferidas, debes hacer algunos cambios, ya que la clase TaskHandler
del módulo deferred
de Python 2 se ha quitado en la versión de Python 3 de esta API.
Para definir una URL personalizada para la ejecución de tareas diferidas, la aplicación puede anular el método post
o el método run_from_request
en la clase deferred.Handler
(antes deferred.TaskHandler
en Python 2) y pasar el parámetro environ
, que representa un diccionario que contiene parámetros de solicitud WSGI. Después, se puede llamar al método post
desde el endpoint personalizado (como se muestra en los ejemplos de Python 3).
El uso integral de la API Deferred de Python 3, como el enrutamiento de solicitudes y el acceso al diccionario environ
, depende del framework web al que se migre la aplicación. Compara los cambios de código realizados
en el ejemplo de Python 2 con los ejemplos de Python 3 de las siguientes secciones.
Ejemplos de Python 3
En el siguiente ejemplo se muestra cómo ejecutar una tarea diferida mediante un endpoint predeterminado y un endpoint personalizado en una aplicación Flask y en una aplicación Django.
Flask
Django
Sin ningún marco
Códigos de ejemplo
Para ver los ejemplos de código completos de esta guía, consulta GitHub.