Secara default, runtime Python 2.7
menggunakan layanan URL-fetch
untuk menangani permintaan HTTP(S) keluar, bahkan jika Anda menggunakan urllib
, urllib2
,
atauhttplib
library Python untuk mengeluarkan permintaan tersebut. URL Fetch tidak menangani
permintaan dari library requests
kecuali jika Anda secara eksplisit
mengaktifkannya.
Runtime Python 3 tidak memerlukan layanan perantara untuk menangani permintaan
keluar. Jika Anda ingin berhenti menggunakan URL Fetch API
tetapi masih memerlukan fungsi yang serupa, Anda harus memigrasikan permintaan tersebut untuk menggunakan
library Python standar seperti
library requests
.
Perbedaan utama antara URL Fetch dan library Python standar
Batas ukuran dankuota untuk permintaan yang ditangani oleh URL Fetch berbeda dengan batas ukuran dankuota untuk permintaan yang tidak ditangani oleh URL Fetch
Dengan URL Fetch, saat aplikasi Anda mengirimkan permintaan ke aplikasi App Engine lain, URL Fetch akan menambahkan header permintaan
X-Appengine-Inbound-Appid
untuk menegaskan identitas aplikasi. Aplikasi yang menerima permintaan tersebut dapat menggunakan identitas untuk menentukan apakah aplikasi harus memproses permintaan tersebut atau tidak.Header ini hanya tersedia dalam permintaan yang dikirim dari aplikasi Anda jika menggunakan URL Fetch. App Engine menghapus header jika Anda atau pihak ketiga menambahkannya ke permintaan.
Untuk mengetahui informasi tentang cara menyatakan dan memverifikasi identitas tanpa menggunakan URL Fetch, baca Memigrasikan Identitas Aplikasi ke Token ID OIDC.
Untuk mengetahui contoh cara menggunakan header permintaan guna memverifikasi identitas aplikasi panggilan saat permintaan dikirim antaraplikasi App Engine, lihat Contoh Permintaan App Engine ke App Engine.
Anda dapat menggunakan URL Fetch untuk menetapkan waktu tunggu default untuk semua permintaan. Sebagian besar library Python 3 seperti
requests
danurllib
menetapkan waktu tunggu default keNone
, sehingga Anda harus mengupdate setiap permintaan yang dibuat oleh kode Anda untuk menentukan waktu tunggu.
Ringkasan proses migrasi
Jika aplikasi Anda menggunakan URL Fetch API untuk membuat permintaan, update kode Anda agar menggunakan library Python standar. Sebaiknya tentukan waktu tunggu untuk setiap permintaan.
Uji permintaan keluar Anda di server pengembangan lokal.
Konfigurasikan aplikasi Anda agar mengabaikan URL Fetch saat dijalankan di App Engine.
Men-deploy aplikasi Anda.
Mengganti URL Fetch API dengan library Python
Jika Anda belum menggunakan library Python standar untuk mengeluarkan permintaan keluar, pilih library dan tambahkan ke dependensi aplikasi Anda.
Misalnya, untuk menggunakan Meminta library, buat file
requirements.txt
di folder yang sama dengan fileapp.yaml
Anda, lalu tambahkan baris berikut:requests==2.24.0
Untuk kompatibilitas dengan Python 2, sebaiknya Anda menyematkan library
requests
ke versi 2.24.0. Saat Anda men-deploy aplikasi, App Engine akan mendownload semua dependensi yang ditentukan dalam filerequirements.txt
.Untuk pengembangan lokal, sebaiknya instal dependensi di lingkungan virtual seperti venv.
Telusuri kode Anda untuk menemukan penggunaan modul
google.appengine.api.urlfetch
, lalu update kode untuk menggunakan library Python Anda.
Membuat permintaan HTTPS sederhana
Contoh berikut menunjukkan cara membuat permintaan HTTP standar menggunakan
library requests
:
Membuat permintaan HTTPS asinkron
Contoh berikut menunjukkan cara membuat permintaan HTTPS asinkron menggunakan
library requests
:
Menguji secara lokal
Jika Anda mengupdate permintaan keluar, jalankan aplikasi Anda di server pengembangan lokal dan konfirmasi bahwa permintaan berhasil.
Mengabaikan URL Fetch
Agar URL Fetch tidak menangani permintaan saat Anda men-deploy aplikasi ke App Engine:
Di file
app.yaml
, tetapkan variabel lingkunganGAE_USE_SOCKETS_HTTPLIB
ke nilai apa pun. Nilainya dapat berupa nilai apa pun, termasuk string kosong. Contoh:env_variables: GAE_USE_SOCKETS_HTTPLIB : ''
Jika Anda mengaktifkan URL Fetch untuk menangani permintaan yang dikirim dari library
requests
, Anda dapat menghapus PermintaanAppEngineAdapter
dari aplikasi.Misalnya, hapus
requests_toolbelt.adapters.appengine
dari fileappengine_config.py
danrequests_toolbelt.adapters.appengine.monkeypatch()
dari file Python Anda.
Perlu diketahui bahwa meskipun Anda mengabaikan URL Fetch seperti yang dijelaskan dalam langkah sebelumnya, aplikasi masih dapat menggunakan URL Fetch API secara langsung.
Men-deploy aplikasi Anda
Setelah siap men-deploy aplikasi, Anda harus:
-
Lihat halaman App Engine Quotas di konsol Google Cloud untuk mengonfirmasi bahwa aplikasi Anda tidak melakukan Panggilan Url Fetch API.
Jika aplikasi berjalan tanpa error, gunakan pemisahan traffic untuk meningkatkan traffic aplikasi yang diupdate secara perlahan. Pantau aplikasi dengan cermat untuk menemukan masalah sebelum memilih rute lebih banyak traffic ke aplikasi yang telah diupdate.