En esta página, se describe cómo usar la API de Deferred, uno de los servicios agrupados en paquetes heredados, con el entorno de ejecución de Python 3 para el entorno estándar. Tu aplicación puede acceder a los servicios en paquetes a través del SDK de servicios de App Engine para Python 3.
Descripción general
Antes, el paquete diferido google.appengine.ext.deferred
dependía del marco de trabajo de aplicaciones web en Python 2. Dado que el marco de trabajo de aplicaciones web se quitó en el SDK de servicios de App Engine para Python 3, debes realizar algunos cambios cuando actualices tu app de Python 2 a Python 3.
Habilita la API diferida
A fin de habilitar la API diferida para Python 3, ya no necesitas configurar builtins.deferred
como on
en el archivo app.yaml
. En su lugar, para habilitar la API, debes pasar use_deferred=True
en la llamada a wrap_wsgi_app()
.
Similitudes y diferencias
De forma predeterminada, la API diferida para Python 3 usa la misma URL /_ah/queue/deferred
y la misma cola predeterminada que usó en Python 2. Ten en cuenta que para las aplicaciones que migran a Cloud Tasks, la cola predeterminada no se creó automáticamente y la biblioteca de tareas diferidas no está disponible.
Si tu app usa el extremo /_ah/queue/deferred
predeterminado, el uso de deferred.defer()
en Python 3 permanece igual que el de Python 2.
Si la app usa una URL personalizada para la ejecución de tareas diferidas, debes realizar algunos cambios, ya que se quitó la clase TaskHandler
del módulo deferred
de Python 2 en la versión de Python 3 de esta API.
A fin de establecer una URL personalizada para la ejecución de tareas diferidas, la app puede anular el método post
o 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. Luego, se puede llamar al método post
desde el extremo personalizado (como se muestra en las muestras de Python 3).
El uso de extremo a extremo de la API diferida de Python 3, como el enrutamiento de solicitudes y el acceso al diccionario environ
, depende del framework web al que migra la app. Compara los cambios de código realizados del ejemplo de Python 2 a los ejemplos de Python 3 en las siguientes secciones.
Ejemplos de Python 3
En el siguiente ejemplo, se muestra cómo ejecutar una tarea diferida que usa un extremo predeterminado y un extremo personalizado en una aplicación de Flask y una de Django.
Flask
Django
Sin ningún framework
Muestras de código
Para ver las muestras de código completas de esta guía, consulta GitHub.