ID regione
REGION_ID
è un codice abbreviato che Google assegna
in base alla regione selezionata al momento della creazione dell'app. Il codice non
corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare
simili ai codici paese e provincia 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) dall'app App Engine.
Per impostazione predefinita, App Engine utilizza il servizio di recupero URL per inviare richieste HTTP(S) in uscita. Per maggiori dettagli sui limiti delle dimensioni delle richieste e su quali intestazioni vengono inviate in una richiesta di recupero URL, consulta Richieste in uscita.Se hai configurato l'accesso VPC serverless o se utilizzi l'API Sockets, devi interrompere il recupero degli URL dalla gestione delle richieste.
Il recupero URL causa l'esito negativo delle richieste alla tua rete VPC o
all'API Sockets. Dopo aver disabilitato il recupero degli URL, la libreria Python standard gestirà le richieste HTTP. Se hai bisogno delle funzionalità fornite dal recupero URL per richieste specifiche, puoi utilizzare direttamente la libreria urlfetch
per queste richieste specifiche.
Invio di una richiesta HTTP
Per inviare una richiesta HTTP in uscita, utilizza il metodo urlfetch.fetch
. Per una migliore portabilità del codice, puoi anche utilizzare le librerie standard Python urllib
, urllib2
o httplib
per inviare richieste HTTP.
Quando utilizzi queste librerie in App Engine, queste eseguono richieste HTTP utilizzando il servizio di recupero URL di App Engine. Puoi anche utilizzare la libreria requests
di terze parti, purché la configuri per utilizzare URLFetch.
urlfetch
I seguenti snippet mostrano come eseguire una richiesta HTTP GET
di base utilizzando urlfetch
. Innanzitutto, importa la libreria urlfetch
dall'SDK di App Engine:
A questo punto, utilizza urlfetch
per eseguire la richiesta
GET
:
Il seguente snippet mostra come eseguire una richiesta più avanzata, inviando dati da un modulo web tramite una richiesta POST
HTTP utilizzando urlfetch
:
urllib2
I seguenti snippet mostrano come eseguire una richiesta HTTP GET
di base utilizzando urllib2
. Innanzitutto, importa la libreria urllib2
:
A questo punto, 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.
Dopo l'installazione, utilizza il modulo requests_toolbelt.adapters.appengine
per configurare le richieste per utilizzare URLFetch:
Dopo la configurazione, puoi utilizzare le richieste normalmente:
Per ulteriori informazioni sull'assistenza per le richieste per Google App Engine, consulta la documentazione per urllib3.contrib.appengine
e requests_toolbelt.appengine
Impostazione di un timeout della richiesta
Puoi modificare la scadenza predefinita utilizzando la
funzione urlfetch.set_default_fetch_deadline()
. Questa funzione memorizza la nuova scadenza predefinita in una variabile locale nei thread, quindi deve essere impostata per ogni richiesta, ad esempio in un middleware personalizzato.
Disattivazione dei reindirizzamenti
Se utilizzi il recupero URL, per impostazione predefinita il servizio sottostante di recupero URL segue fino a cinque reindirizzamenti. Questi reindirizzamenti potrebbero inoltrare informazioni sensibili, come le intestazioni di autorizzazione, alla destinazione reindirizzata. Se la tua app non richiede reindirizzamenti HTTP, ti consigliamo di disabilitare i reindirizzamenti.
Per indicare al servizio di recupero URL di non seguire i reindirizzamenti, imposta il parametro follow_redirects
del metodo fetch
su False
.
Emissione di una richiesta HTTPS
Per inviare una richiesta HTTPS, imposta il parametro validate_certificate
su true
quando chiami il metodo urlfetch.fetch()
.
Emissione di una richiesta asincrona
Per impostazione predefinita, le richieste HTTP(S) sono sincrone. Per emettere una richiesta asincrona, la tua applicazione deve:
- Crea un nuovo oggetto RPC utilizzando
urlfetch.create_rpc()
. Questo oggetto rappresenta la chiamata asincrona nelle chiamate di metodo successive. - Chiama il numero
urlfetch.make_fetch_call()
per effettuare la richiesta. Questo metodo prende l'oggetto RPC e l'URL della destinazione della richiesta come parametri. - Chiama il metodo
get_result()
dell'oggetto RPC. 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 effettuare una richiesta asincrona di base da un'applicazione Python. Innanzitutto, importa la libreria urlfetch
dall'SDK di 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à chiamata quando l'applicazione chiama un metodo sull'oggetto, ad esempio wait()
, checksuccess()
o get_result()
, che fa sì che l'oggetto attenda 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 del callback.
- Crea una funzione gestore per gestire il risultato della chiamata di recupero.
- Imposta l'attributo
callback
dell'oggetto RPC sulla funzione helper.
Il seguente snippet illustra come richiamare una funzione di callback:
Invio di una richiesta a un'altra app di App Engine
Quando invii una richiesta a un'altra app App Engine, quest'ultima deve rivendicare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid
alla richiesta.
Se indichi al servizio di recupero URL di non seguire i reindirizzamenti, App Engine aggiungerà automaticamente questa intestazione alle richieste.
Per istruzioni su come disattivare i reindirizzamenti, consulta la sezione Disattivazione dei reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero URL, ad esempio le intestazioni che vengono inviate in una richiesta di recupero URL in Richieste in uscita.