ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
En esta página, se describe cómo emitir solicitudes HTTP(S) desde tu app de App Engine con el servicio de recuperación de URLs para entornos de ejecución de segunda generación.
Antes de seguir las instrucciones de esta página, te recomendamos que uses soluciones de lenguaje idiomático para emitir solicitudes HTTP(S) antes de usar el servicio de recuperación de URLs. El caso de uso principal para usar la recuperación de URL es cuando deseas emitir solicitudes HTTP(S) a otra app de App Engine y confirmar la identidad de tu app en esa solicitud.
Para obtener más información sobre cuáles son los límites de tamaño de las solicitudes y qué encabezados se envían en una solicitud de recuperación de URL, consulta Solicitudes salientes.
Emite una solicitud HTTP
Para usar el servicio de recuperación de URL para emitir solicitudes HTTP(S) salientes, debes llamar a la biblioteca urlfetch
de forma explícita.
Para emitir una solicitud HTTP saliente, puedes usar cualquiera de las siguientes bibliotecas:
- Para mejorar la portabilidad del código, usa la biblioteca estándar de Python
urllib.request
para emitir solicitudes HTTP. - Usa una biblioteca de terceros, como
requests
. Llama de forma explícita a la biblioteca
urlfetch
y usa el métodourlfetch.fetch
.
urllib.request
Importa la biblioteca urllib.request
:
import urllib.request
A continuación, usa urllib.request
para realizar la solicitud GET
:
url = 'http://www.google.com/humans.txt'
try:
result = urllib.request.urlopen(url)
self.response.write(result.read())
except urllib.error.URLError:
logging.exception('Caught exception fetching url')
urlfetch
En los siguientes fragmentos, se demuestra cómo realizar una solicitud HTTP básica GET
con urlfetch
. Primero, importa la biblioteca urlfetch
del SDK de App Engine:
A continuación, usa urlfetch
para realizar la solicitud GET
:
En el siguiente fragmento, se muestra cómo realizar una solicitud más avanzada, mediante el envío de datos desde un formulario web a través de una solicitud POST
HTTP con urlfetch
:
Configura el tiempo de espera de una solicitud
Puedes configurar el plazo predeterminado con la función urlfetch.set_default_fetch_deadline()
. Esta función almacena este plazo nuevo predeterminado en una variable local de conversación, así que debe configurarse en cada solicitud, por ejemplo, en un middleware personalizado.
Inhabilita los redireccionamientos
Si usas la recuperación de URL, el servicio de recuperación de URL subyacente sigue hasta cinco redireccionamientos de forma predeterminada. Estos redireccionamientos podrían reenviar información sensible, como los encabezados de autorización, al destino redireccionado. Si tu app no requiere redireccionamientos HTTP, se recomienda que los inhabilites.
Para indicarle al servicio de recuperación de URLs que no siga los redireccionamientos, configura el parámetro follow_redirects
del método fetch
en False
.
Cómo emitir una solicitud HTTPS
Para emitir una solicitud HTTPS, configura el parámetro validate_certificate
en true
cuando llames al método urlfetch.fetch()
.
Emite una solicitud asíncrona
Las solicitudes HTTP(S) son síncronas de manera predeterminada. Para emitir una solicitud asíncrona, tu aplicación debe hacer lo siguiente:
- Crea un objeto RPC nuevo con
urlfetch.create_rpc()
. Este objetivo representará tu llamada asíncrona en las llamadas de método subsecuentes. - Llama a
urlfetch.make_fetch_call()
para realizar la solicitud. Este método toma tu objeto RPC y la URL de destino de la solicitud como parámetros. - Llamar al método
get_result()
del objeto RPC. Este método muestra el objeto resultante si la solicitud es correcta y genera una excepción si ocurre un error durante la solicitud.
Los fragmentos siguientes muestran cómo realizar una solicitud asíncrona básica desde una aplicación de Python. Primero, importa la biblioteca urlfetch
del SDK de App Engine:
A continuación, usa urlfetch
para realizar la solicitud asíncrona:
Configura el tiempo de espera de una solicitud
Para configurar el tiempo de espera de tu solicitud, configura el parámetro deadline
del método urlfetch.create_rpc()
cuando crees el objeto RPC.
Emplea una función de devolución de llamada
Puedes definir una función de devolución de llamada para tu objetivo de RPC. Se llamará a la función cuando tu aplicación llame a un método del objetivo, como wait()
, checksuccess()
o get_result()
, que haga que el objetivo espere a que se complete la solicitud.
Para usar una función de devolución de llamada que controle el resultado de tu llamada de recuperación, haz lo siguiente:
- Crea una función auxiliar que defina el alcance de la devolución de llamada.
- Crea una función controladora que maneje el resultado de tu llamada de recuperación.
- Configura el atributo
callback
de tu objeto RPC en la función auxiliar.
El fragmento siguiente muestra cómo invocar una función de devolución de llamada:
Cómo emitir una solicitud dirigida a otra aplicación de App Engine
Cuando usas la recuperación de URL para emitir una solicitud a otra app de App Engine, tu app puede confirmar su identidad agregando el encabezado X-Appengine-Inbound-Appid
a la solicitud.
Si le indicas al servicio de recuperación de URL que no siga los redireccionamientos, App Engine agregará este encabezado a las solicitudes de manera automática. Consulta Inhabilita redireccionamientos para obtener más orientación.
¿Qué sigue?
Obtén más información sobre el servicio de recuperación de URL, como los encabezados que se envían en una solicitud de recuperación de URL, en Solicitudes de salida.