Emulator Cloud Datastore menyediakan emulasi lokal lingkungan Datastore produksi. Cloud Datastore Emulator secara bertahap diluncurkan sebagai implementasi Datastore default untuk dev_appserver.
Manfaat melakukan migrasi ke Emulator Datastore
Emulator Datastore dapat digunakan bersama antara library klien lingkungan standar App Engine seperti DB dan NDB, serta Library Klien Cloud Datastore.
Anda dapat menggunakan Emulator Datastore untuk berbagi data lokal antara layanan yang berjalan di lingkungan standar App Engine dan lingkungan fleksibel App Engine.
Sebelum memulai
Download dan instal Java runtime (JRE) versi 11 atau yang lebih baru.
Jalankan dev_appserver dari direktori
google-cloud-sdk/bin
.
Memilih lingkungan emulasi Anda
Emulator Cloud Datastore adalah emulator default untuk sebagian pengguna dev_appserver. Jika Anda menggunakan Emulator Cloud Datastore, dev_appserver akan menampilkan:
... Using Cloud Datastore Emulator.
Anda dapat memaksa dev_appserver untuk menggunakan emulator Cloud Datastore dengan menetapkan
flag --support_datastore_emulator
ke benar (true) saat memulai dev_appserver.py
:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --support_datastore_emulator=[true|false] app.yaml
Ganti DEVAPPSERVER_ROOT dengan jalur ke folder tempat Anda
mengekstrak versi devapp_server.py
yang diarsipkan. Untuk informasi selengkapnya tentang cara
mendownload dan menggunakan versi dev_appserver.py
yang diarsipkan, lihat Menggunakan server pengembangan lokal.
Menggunakan dev_appserver dengan Emulator Datastore
Dev_appserver memutuskan apakah akan meluncurkan emulator berdasarkan variabel
lingkungan DATASTORE_EMULATOR_HOST
.
Jika variabel lingkungan ini ada, dev_appserver akan berkomunikasi dengan proses emulator yang ada dan berjalan di
DATASTORE_EMULATOR_HOST
.Jika variabel lingkungan ini tidak ada, dev_appserver akan meluncurkan proses emulator baru. Anda dapat menentukan port untuk Emulator Datastore dengan menetapkan
--datastore_emulator_port
saat memulai dev_appserver.py.
Perubahan perilaku
Konversi format data lokal
Saat ini, emulator Datastore lokal menyimpan data di sqlite3 sedangkan Emulator Cloud Datastore menyimpan data sebagai objek Java.
Saat dev_appserver diluncurkan dengan data sqlite3 lama, data akan dikonversi ke objek Java. Data asli dicadangkan dengan nama file {original-data-filename}.sqlitestub.
Lokasi file data lokal
File data lokal dapat ditentukan dengan flag --datastore_path
.
Saat dev_appserver meluncurkan emulator, lokasi tetap tidak berubah.
Saat dev_appserver menggunakan Emulator Cloud Datastore yang ada, flag ini akan diabaikan untuk mendukung setelan emulator.
index.yaml lokal
Index.yaml kosong akan dianggap tidak valid. Sintaksis index.yaml adalah format YAML. File index.yaml memiliki satu elemen daftar yang disebut index.
Saat dev_appsever meluncurkan emulator, index.yaml akan tetap berada di direktori project aplikasi.
Saat dev_appserver menggunakan Emulator Cloud Datastore yang ada, index.yaml akan dikelola oleh emulator tersebut.
Fitur untuk server datastore lokal lainnya tidak berubah.
Pemecahan masalah
Mendapatkan output emulator
Secara default, dev_appserver menjalankan Emulator Datastore dalam mode senyap. Untuk melihat
output Emulator Datastore, jalankan dev_appserver dengan
--dev_appserver_log_level=debug
.
Impor gRPC yang gagal
dev_appserver menggunakan gRPC untuk berkomunikasi dengan Emulator Cloud Datastore. gcloud CLI mengemas gRPC, tetapi versi paketnya tidak kompatibel dengan beberapa sistem operasi sehingga menyebabkan kegagalan impor.
Untuk memperbaiki kegagalan impor, Anda dapat menginstal gRPC secara terpisah menggunakan pip
dengan
gcloud CLI 219.0.0 atau yang lebih baru:
pip install grpcio