ID regione
Il REGION_ID
è un codice abbreviato che Google assegna
in base alla regione selezionata durante la creazione dell'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 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 inviare richieste HTTP(S) in uscita. Per informazioni dettagliate sui limiti di dimensione delle richieste e sulle intestazioni 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 la gestione delle richieste da parte del servizio di recupero URL.
URL Fetch causa l'esito negativo delle richieste alla tua rete VPC o all'API Sockets. Dopo aver disattivato il servizio di recupero URL, le richieste HTTP verranno gestite dalla libreria Python standard. Se hai bisogno delle funzionalità fornite da
URL Fetch per richieste specifiche, puoi utilizzare direttamente la libreria urlfetch
per queste richieste specifiche.
Emettere 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, eseguono richieste HTTP utilizzando
il servizio URL Fetch di App Engine. Puoi anche utilizzare la libreria requests
di terze parti, a condizione che 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 App Engine:
Successivamente, 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 HTTP POST
utilizzando
urlfetch
:
urllib2
I seguenti snippet mostrano come eseguire una richiesta HTTP
GET
di base utilizzando urllib2
. Innanzitutto, importa
la libreria urllib2
:
Successivamente, utilizza urllib2
per eseguire la richiesta GET
:
richieste
Per utilizzare le richieste, devi installare sia requests
sia 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 configurate, puoi utilizzare le richieste normalmente:
Per ulteriori informazioni sul supporto delle richieste per Google App Engine, consulta la documentazione relativa a urllib3.contrib.appengine
e requests_toolbelt.appengine
.
Imposta 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 del thread, quindi deve essere impostata per ogni
richiesta, ad esempio in un middleware personalizzato.
Disattivare i reindirizzamenti
Se utilizzi URL Fetch, il servizio URL Fetch 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 reindirizzamenti HTTP, ti consigliamo di disattivarli.
Per indicare al servizio URL Fetch di non seguire i reindirizzamenti, imposta il parametro follow_redirects
del metodo fetch
su False
.
Emettere una richiesta HTTPS
Per impostazione predefinita, il servizio URL Fetch sottostante convalida il certificato dell'host che contatta e rifiuta le richieste se il certificato non corrisponde. Non è necessario proteggere esplicitamente la richiesta.
Disattiva la convalida del certificato host
Per disattivare la convalida automatica del certificato host in URL Fetch, invia una richiesta HTTPS e imposta il parametro validate_certificate
su False
quando chiami il metodo urlfetch.fetch()
.
Emettere una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per inviare una richiesta asincrona, l'applicazione deve:
- Crea un nuovo oggetto RPC utilizzando
urlfetch.create_rpc()
. Questo oggetto rappresenta la chiamata asincrona nelle chiamate di metodo successive. - Chiama
urlfetch.make_fetch_call()
per effettuare la richiesta. Questo metodo accetta l'oggetto RPC e l'URL della richiesta di destinazione 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 App Engine:
Successivamente, utilizza urlfetch
per inviare la richiesta asincrona:
Imposta 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.
Utilizzare 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 di gestione per gestire il risultato della chiamata di recupero.
- Imposta l'attributo
callback
dell'oggetto RPC sulla funzione helper.
Il seguente snippet mostra come richiamare una funzione di callback:
Emettere una richiesta a un'altra app App Engine
Quando invii una richiesta a un'altra app App Engine, la tua app App Engine
deve affermare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid
alla richiesta.
Se istruisci il servizio URL Fetch a non seguire i reindirizzamenti, App Engine
aggiungerà automaticamente questa intestazione alle richieste.
Per indicazioni su come disattivare i reindirizzamenti, vedi 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.