ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Questa pagina descrive come inviare richieste HTTP(S) dalla tua app App Engine.
Per impostazione predefinita, App Engine utilizza il servizio di recupero URL per emettere richieste HTTP(S) in uscita. Per dettagli sui limiti delle dimensioni delle richieste e sulle intestazioni inviate in un recupero URL richiesta, consulta Richieste in uscita.Se hai configurato l'accesso VPC serverless o se utilizzi l'API Sockets, devi impedire a URL Fetch di gestire le richieste.
URL Fetch causa l'errore delle richieste alla rete VPC o all'API Sockets. Dopo aver disabilitato il recupero degli URL, lo standard Python
per gestire le richieste HTTP. Se hai bisogno delle funzionalità fornite da URL Fetch per richieste specifiche, puoi utilizzare direttamente la raccolta urlfetch
per queste richieste specifiche.
Invio di una richiesta HTTP
Per emettere una richiesta HTTP in uscita, utilizza il metodo
urlfetch.fetch
. Per migliorare la portabilità del codice, puoi anche utilizzare lo standard Python
librerie urllib
, urllib2
o httplib
per emettere richieste HTTP.
Quando utilizzi queste librerie in App Engine, queste eseguono richieste HTTP utilizzando
servizio di recupero URL di App Engine. Puoi anche utilizzare la libreria di terze parti requests
, a condizione che la configuri per utilizzare URLFetch.
urlfetch
I seguenti snippet mostrano come eseguire una richiesta HTTP di base
Richiesta di GET
tramite urlfetch
. Innanzitutto, importa
la libreria urlfetch
dall'SDK di App Engine:
Quindi, utilizza urlfetch
per eseguire la richiesta GET
:
Il seguente snippet mostra come eseguire una richiesta più avanzata,
inviare dati da un modulo web tramite una richiesta POST
HTTP utilizzando
urlfetch
:
urllib2
I seguenti snippet mostrano come eseguire una richiesta HTTP di base
Richiesta di GET
tramite urllib2
. Per prima cosa, importa
la libreria urllib2
:
Quindi, utilizza urllib2
per eseguire la richiesta GET
:
richieste
Per utilizzare le richieste, devi installare sia requests
che requests-toolbelt
seguendo le istruzioni per i fornitori.
Una volta installato, utilizza il modulo requests_toolbelt.adapters.appengine
per configurare le richieste in modo che utilizzino URLFetch:
Una volta configurato, puoi utilizzare le richieste normalmente:
Per ulteriori informazioni sul supporto delle richieste per Google App Engine, consulta la documentazione di urllib3.contrib.appengine
e requests_toolbelt.appengine
Impostazione di un timeout della richiesta
Puoi modificare la scadenza predefinita utilizzando
Funzione urlfetch.set_default_fetch_deadline()
. Questa funzione memorizza
nuova scadenza predefinita su una variabile thread-local, quindi deve essere impostata per ogni
richiesta, ad esempio in un middleware personalizzato.
Disattivare i reindirizzamenti
Se utilizzi il recupero URL, il servizio di recupero URL sottostante segue fino a cinque reindirizzamenti per impostazione predefinita. Questi reindirizzamenti potrebbero inoltrare informazioni sensibili, come le intestazioni di autorizzazione, alla destinazione reindirizzata. Se la tua app non richiede i reindirizzamenti HTTP, ti consigliamo di disattivarli.
Per indicare al servizio di recupero dell'URL di non seguire i reindirizzamenti, imposta il parametro follow_redirects
del metodo fetch
su False
.
Emissione di una richiesta HTTPS
Per emettere una richiesta HTTPS, imposta il parametro validate_certificate
su true
quando chiami il metodo urlfetch.fetch()
.
Invio di una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per emettere una richiesta asincrona, l'applicazione deve:
- Crea un nuovo oggetto RPC utilizzando
urlfetch.create_rpc()
. Questo oggetto rappresenta la chiamata asincrona nelle chiamate metodi subsequenti. - Chiama
urlfetch.make_fetch_call()
per effettuare la richiesta. Questo metodo prende come parametri l'oggetto RPC e l'URL del target della richiesta. - Chiama l'oggetto RPC
get_result()
. Questo metodo restituisce l'oggetto risultato se la richiesta ha esito positivo e genera un'eccezione se si è verificato un errore durante la richiesta.
I seguenti snippet mostrano come rendere un modello asincrono di base
da un'applicazione Python. Innanzitutto, importa la libreria urlfetch
dall'SDK App Engine:
Quindi, utilizza urlfetch
per effettuare la richiesta asincrona:
Impostazione di un timeout della richiesta
Per impostare un timeout per la richiesta, imposta il parametro deadline
del metodo urlfetch.create_rpc()
quando crei l'oggetto RPC.
Utilizzo di una funzione di callback
Puoi definire una funzione di callback per l'oggetto RPC. La funzione
verrà chiamato quando la tua applicazione chiama un metodo
come wait()
, checksuccess()
o
get_result()
: l'oggetto attende
il completamento della richiesta.
Per utilizzare una funzione di callback per gestire il risultato della chiamata di recupero:
- Crea una funzione helper per definire l'ambito di Google.
- Crea una funzione di gestore per gestire il risultato della chiamata di recupero.
- Imposta l'attributo
callback
dell'oggetto RPC sulla funzione di assistenza.
Lo snippet seguente mostra come richiamare una funzione di callback:
Emissione di una richiesta a un'altra app App Engine
Quando invii una richiesta a un'altra app di App Engine, la tua app di App Engine
deve dichiarare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid
alla richiesta.
Se indichi al servizio di recupero dell'URL di non seguire i reindirizzamenti, App Engine aggiugnerà automaticamente questa intestazione alle richieste.
Per indicazioni sulla disattivazione dei reindirizzamenti, consulta la sezione Disattivare i reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero URL, ad esempio le intestazioni inviate in una richiesta di recupero URL in Richieste in uscita.