Lokasi App Engine
App Engine bersifat regional. Artinya, infrastruktur yang menjalankan aplikasi Anda terletak di region tertentu, dan Google mengelolanya sehingga aplikasi Anda tersedia secara redundan di semua zona dalam region tersebut.
Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama untuk memilih region tempat aplikasi dijalankan. Umumnya, Anda dapat memilih region yang paling dekat dengan pengguna aplikasi Anda, tetapi Anda harus mempertimbangkan lokasi tempat App Engine tersedia serta lokasi dariGoogle Cloud produk dan layanan Google Cloud lainnya yang digunakan aplikasi Anda. Penggunaan layanan di beberapa lokasi dapat memengaruhi latensi dan harga aplikasi.
Anda tidak dapat mengubah region aplikasi setelah menyetelnya.
Jika sudah membuat aplikasi App Engine, Anda dapat melihat region-nya dengan melakukan salah satu tindakan berikut:
Jalankan perintah
gcloud app describe.Buka Dasbor App Engine di Google Cloud konsol. Region muncul di dekat bagian atas halaman.
Cloud NDB adalah library klien untuk Python yang menggantikan App Engine NDB. App Engine NDB memungkinkan aplikasi menyimpan dan membuat kueri data di database Datastore. Cloud NDB memungkinkan aplikasi Python 3 untuk menyimpan dan membuat kueri data dalam database yang sama. Namun, produk yang mengelola database tersebut telah berubah dari Datastore menjadi Firestore dalam mode Datastore. Meskipun library Cloud NDB dapat mengakses data apa pun yang dibuat dengan App Engine NDB, beberapa jenis data terstruktur yang disimpan menggunakan Cloud NDB tidak dapat diakses dengan App Engine NDB. Oleh karena itu, migrasi ke Cloud NDB harus dianggap tidak dapat dibatalkan.
Cloud NDB dimaksudkan untuk menggantikan fitur di App Engine NDB, sehingga tidak akan mendukung fitur baru Firestore dalam mode Datastore. Sebaiknya aplikasi baru menggunakan library klien mode Datastore, bukan Cloud NDB.
Untuk mengetahui informasi selengkapnya tentang Cloud NDB, lihat halaman berikut di GitHub:
Perbandingan App Engine NDB dan Cloud NDB
Kesamaan:
- Cloud NDB mendukung hampir semua fitur yang didukung oleh App Engine NDB dengan hanya sedikit perbedaan dalam sintaksis metodenya.
Perbedaan:
App Engine NDB API yang mengandalkan layanan khusus runtime App Engine lama telah diupdate atau dihapus dari Cloud NDB.
Fitur baru di Python 3 dan Django menghilangkan kebutuhan akan
google.appengine.ext.ndb.django_middleware. Tulis middleware Anda sendiri hanya dengan beberapa baris kode.App Engine NDB mengharuskan aplikasi dan database Datastore berada di project Google Cloud yang sama, dengan App Engine memberikan kredensial secara otomatis. Cloud NDB dapat mengakses database mode Datastore dalam project apa pun, selama Anda mengautentikasi klien dengan benar. Hal ini sesuai dengan Google Cloud API dan library klien lainnya.
Cloud NDB tidak menggunakan layanan Memcache App Engine untuk menyimpan data dalam cache.
Sebagai gantinya, Cloud NDB menyimpan data dalam cache di penyimpanan data dalam memori Redis yang dikelola oleh Memorystore, Redis, atau sistem lainnya. Meskipun hanya penyimpanan data Redis yang didukung, Cloud NDB memiliki penyimpanan cache umum dan ditentukan dalam antarmuka
GlobalCacheabstrak, yang dapat mendukung implementasi konkret tambahan.Untuk mengakses Memorystore for Redis, aplikasi Anda perlu menggunakan Akses VPC Serveless.
Memorystore for Redis maupun Serverless Access tidak menyediakan paket gratis, dan produk ini mungkin tidak tersedia di region aplikasi Anda. Lihat Sebelum memulai migrasi untuk informasi selengkapnya.
Daftar lengkap perbedaan tersedia di catatan migrasi untuk project GitHub Cloud NDB.
Contoh kode:
Operasi database dasar menggunakan App Engine NDB
Operasi database dasar menggunakan Cloud NDB
Sebelum Anda bermigrasi
Sebelum mulai bermigrasi:
Jika Anda belum melakukannya, siapkan lingkungan pengembangan Python Anda untuk menggunakan versi Python yang kompatibel dengan Google Cloud, dan instal alat pengujian untuk membuat lingkungan Python yang terisolasi.
Jika Anda perlu menyimpan data dalam cache, pastikan region aplikasi Anda didukung oleh Akses VPC Serverless dan Memorystore for Redis.
Tentukan apakah Anda perlu menyimpan data dalam cache
Jika aplikasi Anda perlu menyimpan data dalam cache, perlu diketahui bahwa Memorystore for Redis dan Akses VPC Serverless tidak memiliki paket gratis dan tidak mendukung semua Google Cloud region.
Secara umum:
Jika aplikasi Anda sering membaca data yang sama, penyimpanan dalam cache dapat mengurangi latensi.
Makin banyak permintaan yang dilayani aplikasi Anda, makin besar dampak yang dapat ditimbulkan oleh penyimpanan dalam cache.
Untuk mengetahui seberapa banyak Anda mengandalkan data yang di-cache, lihat dasbor Memcache untuk melihat rasio cache yang ditemukan hingga yang tidak ditemukan. Jika rasionya tinggi, penggunaan cache data kemungkinan akan berdampak besar dalam mengurangi latensi aplikasi.
Untuk mengetahui informasi tentang harga, lihat Harga Memorystore dan Harga Akses VPC Serverless.
Konfirmasi wilayah
Jika Anda perlu menyimpan data dalam cache, pastikan region aplikasi Anda didukung oleh Memorystore for Redis dan Akses VPC Serverless:
Lihat region aplikasi Anda, yang muncul di dekat bagian atas Dasbor App Engine di Google Cloud console.
Region ini muncul di dekat bagian atas halaman, tepat di bawah URL aplikasi Anda.
Pastikan aplikasi Anda berada di salah satu region yang didukung oleh Akses VPC Serverless.
Pastikan bahwa aplikasi Anda berada di salah satu region yang didukung oleh Memorystore for Redis dengan membuka halaman Buat konektor dan melihat region dalam daftar Region.
Jika aplikasi Anda tidak berada di region yang didukung oleh Memorystore for Redis dan Akses VPC Serverless:
Buat Google Cloud project.
Buat aplikasi App Engine baru di project dan pilih region yang didukung.
Buat Google Cloud layanan yang digunakan aplikasi Anda di project baru.
Atau, Anda dapat mengupdate aplikasi untuk menggunakan layanan yang ada di project lama, tetapi harga dan penggunaan resource mungkin berbeda jika Anda menggunakan layanan di project dan region yang berbeda. Baca dokumentasi setiap layanan untuk mengetahui informasi selengkapnya.
Deploy aplikasi Anda ke project baru.
Memahami izin mode Datastore
Setiap interaksi dengan layanan Google Cloud perlu diotorisasi. Misalnya, untuk menyimpan atau membuat kueri data dalam database mode Datastore, aplikasi Anda harus menyediakan kredensial dari akun yang diotorisasi untuk mengakses database.
Secara default, aplikasi Anda memberikan kredensial akun layanan default App Engine, yang diberi otorisasi untuk mengakses database dalam project yang sama dengan aplikasi Anda.
Anda harus menggunakan teknik autentikasi alternatif yang secara eksplisit memberikan kredensial jika salah satu kondisi berikut terpenuhi:
Aplikasi Anda dan database mode Datastore berada diGoogle Cloud project yang berbeda.
Anda telah mengubah peran yang ditetapkan ke akun layanan App Engine default.
Untuk mengetahui informasi tentang teknik autentikasi alternatif, lihat Menyiapkan Autentikasi untuk Aplikasi Produksi Server ke Server.
Ringkasan proses migrasi
Untuk bermigrasi ke Cloud NDB:
-
Instal library klien Cloud NDB.
Update pernyataan import untuk mengimpor modul dari Cloud NDB.
Tambahkan kode yang membuat klien Cloud NDB. Klien dapat membaca variabel lingkungan aplikasi Anda dan menggunakan data untuk melakukan autentikasi dengan mode Datastore.
Tambahkan kode yang menggunakan konteks runtime klien untuk menjaga penyimpanan dalam cache dan transaksi tetap terpisah antara rangkaian pesan.
Hapus atau perbarui kode yang menggunakan metode dan properti yang tidak lagi didukung.
Deploy aplikasi Anda ke App Engine.
Seperti halnya perubahan yang Anda lakukan pada aplikasi, pertimbangkan untuk menggunakan pemisahan traffic untuk meningkatkan traffic secara perlahan. Pantau aplikasi dengan cermat untuk menemukan masalah database sebelum mengarahkan lebih banyak traffic ke aplikasi yang telah diupdate.
Mengupdate aplikasi Python
Untuk memigrasikan aplikasi Anda ke Cloud NDB, instal library klien dan perbarui kode Anda.
Menginstal library Cloud NDB untuk aplikasi Python
Untuk menginstal library klien Cloud NDB di aplikasi App Engine Python Anda:
Update file
app.yaml. Tentukan elemenruntimedengan versi Python yang didukung. Misalnya, fileapp.yamlAnda mungkin terlihat seperti berikut:runtime: python310 # or another supported versionRuntime Python menginstal library secara otomatis, sehingga Anda tidak perlu menentukan library bawaan. Jika aplikasi Python Anda menggunakan layanan paket lama lainnya saat bermigrasi, biarkan file
app.yamlapa adanya.Perbarui file
requirements.txt. Tambahkan Library Klien Cloud untuk Cloud NDB ke daftar dependensi dalam filerequirements.txt.google-cloud-ndbApp Engine otomatis menginstal dependensi ini selama deployment aplikasi, jadi hapus folder
libjika ada.
Update pernyataan impor
Lokasi modul NDB telah dipindahkan ke
google.cloud.ndb. Perbarui pernyataan import aplikasi Anda seperti yang ditunjukkan
dalam tabel berikut:
| Hapus | Ganti dengan |
|---|---|
from google.appengine.ext import ndb |
from google.cloud import ndb |
Membuat Klien Cloud NDB
Seperti library klien lainnya yang didasarkan pada Google Cloud API, langkah pertama dalam menggunakan Cloud NDB adalah membuat objek Client. Klien berisi kredensial dan data lain
yang diperlukan untuk terhubung ke mode Datastore. Contoh:
from google.cloud import ndb
client = ndb.Client()
Dalam skenario otorisasi default yang dijelaskan sebelumnya, klien Cloud NDB berisi kredensial dari akun layanan default App Engine, yang diberi otorisasi untuk berinteraksi dengan mode Datastore. Jika Anda tidak menangani skenario default ini, lihat Kredensial Default Aplikasi (ADC) untuk mengetahui informasi tentang cara memberikan kredensial.
Menggunakan konteks runtime klien
Selain menyediakan kredensial yang diperlukan untuk berinteraksi dengan
mode Datastore, klien Cloud NDB berisi metode
context() yang menampilkan konteks runtime.
Konteks runtime mengisolasi permintaan cache dan transaksi dari interaksi
mode Datastore serentak lainnya.
Semua interaksi dengan mode Datastore harus terjadi dalam konteks runtime NDB. Karena pembuatan definisi model tidak akan berinteraksi dengan mode Datastore, Anda dapat menentukan class model sebelum membuat klien Cloud NDB dan mengambil konteks runtime, lalu menggunakan konteks runtime di pengendali permintaan untuk mendapatkan data dari.
Contoh:
Aplikasi multi-thread
Konteks runtime yang ditampilkan oleh klien Cloud NDB hanya berlaku untuk satu rangkaian pesan. Jika aplikasi Anda menggunakan beberapa thread untuk satu permintaan, Anda harus mengambil konteks runtime terpisah untuk setiap thread yang akan menggunakan library Cloud NDB.
Menggunakan konteks runtime dengan framework WSGI
Jika aplikasi web Anda menggunakan framework WSGI, Anda dapat otomatis membuat konteks runtime baru untuk setiap permintaan dengan membuat objek middleware yang mengambil konteks runtime, lalu menggabungkan aplikasi dalam objek middleware.
Pada contoh penggunaan middleware dengan Flask berikut:
Metode
middlewaremembuat objek middleware WSGI dalam konteks runtime klien NDB.Aplikasi Flask digabungkan dalam objek middleware.
Flask kemudian akan meneruskan setiap permintaan melalui objek middleware, yang mengambil konteks runtime NDB baru untuk setiap permintaan.
Menggunakan konteks runtime dengan Django
Middleware Django yang disediakan oleh library App Engine NDB
tidak didukung oleh library Cloud NDB. Jika Anda menggunakan middleware
(google.appengine.ext.ndb.django_middleware) ini di aplikasi, ikuti langkah-langkah berikut
untuk mengupdate aplikasi:
Gunakan sistem middleware Django untuk membuat konteks runtime baru untuk setiap permintaan.
Dalam contoh berikut:
Metode
ndb_django_middlewaremembuat klien Cloud NDB.Metode
middlewaremembuat objek middleware dalam konteks runtime klien NDB.
Di file settings.py Django, perbarui setelan
MIDDLEWAREagar mencantumkan middleware baru yang Anda buat, bukangoogle.appengine.ext.ndb.NdbDjangoMiddleware.
Django kini akan meneruskan setiap permintaan melalui objek middleware yang Anda cantumkan dalam
setelan MIDDLEWARE, dan objek ini akan mengambil konteks runtime NDB
baru untuk setiap permintaan.
Memperbarui kode untuk NDB API yang dihapus atau diubah
NDB API yang mengandalkan API dan layanan khusus App Engine telah diupdate atau dihapus dari library Cloud NDB.
Anda harus mengupdate kode jika menggunakan salah satu NDB API berikut:
- Properti
google.appengine.ext.ndb.Modeldan model google.appengine.ext.ndb.Keygoogle.appengine.ext.ndb.query.QueryOptionsdanPropertyOrdergoogle.appengine.ext.ndb.utilsgoogle.appengine.api.namespacemanagergoogle.appengine.api.ext.ndb.taskletsgoogle.appengine.api.datastore_errors
Model dan Properti model
Metode berikut dari google.appengine.ext.ndb.Model
tidak tersedia di library Cloud NDB karena menggunakan
API khusus App Engine yang tidak lagi tersedia.
| API yang Dihapus | Penggantian |
|---|---|
Model.get_indexes dan Model.get_indexes_async
|
Tidak ada |
Model._deserialize dan Model._serialize
|
Tidak ada |
Model.make_connection
|
Tidak ada |
Tabel berikut menjelaskan properti google.appengine.ext.ndb.Model
tertentu yang telah berubah di library Cloud NDB:
| Properti | Ubah |
|---|---|
TextProperty
|
google.cloud.ndb.TextProperty tidak dapat diindeks. Jika Anda
mencoba menetapkan google.cloud.ndb.TextProperty.indexed,
NotImplementedError akan dimunculkan.
|
StringProperty
|
StringProperty
selalu diindeks. Jika Anda mencoba menetapkan
google.cloud.ndb.StringProperty.indexed,
NotImplementedError akan dimunculkan.
|
Semua properti dengan argumen name atau kind di
konstruktor.
|
name atau kind harus berupa jenis data str,
karena unicode telah diganti dengan str di Python 3.
|
Class dan metode dalam tabel berikut tidak lagi tersedia karena menggunakan resource khusus App Engine yang tidak lagi tersedia.
| API yang Dihapus | Penggantian |
|---|---|
google.appengine.ext.ndb.msgprop.MessageProperty dan google.appengine.ext.ndb.msgprop.EnumProperty
|
Tidak ada
Jika Anda mencoba membuat objek ini, |
google.appengine.ext.ndb.model.Property:_db_get_value_db_set_value_db_set_compressed_meaning_db_set_uncompressed_meaning__creation_counter_global
|
Tidak ada
Metode ini bergantung pada buffering protokol mode Datastore yang telah berubah. |
Model.make_connection
|
Tidak ada |
Kunci
Metode berikut dari google.appengine.ext.ndb.Key
tidak tersedia di library Cloud NDB. Metode ini digunakan
untuk meneruskan kunci ke dan dari DB API, yang tidak lagi didukung
(DB adalah pendahulu dari App Engine NDB).
| API yang Dihapus | Penggantian |
|---|---|
Key.from_old_key dan Key.to_old_key
|
Tidak ada |
Selain itu, perhatikan perubahan berikut:
| App Engine NDB | Cloud NDB |
|---|---|
| Jenis dan ID string harus kurang dari 500 byte | Jenis dan ID string harus kurang dari 1.500 byte. |
Key.app() menampilkan project ID yang Anda tentukan saat
membuat kunci.
|
Nilai yang ditampilkan oleh
google.cloud.ndb.Key.app() dapat berbeda dengan ID
asli yang diteruskan ke konstruktor. Hal ini karena ID aplikasi berawalan seperti
s~example adalah ID lama dari App Engine.
Fungsi tersebut telah diganti dengan project ID yang setara, seperti
example.
|
Kueri
Seperti App Engine NDB, Cloud NDB menyediakan class QueryOptions
(google.cloud.ndb.query.QueryOptions) yang memungkinkan Anda menggunakan kembali sekumpulan
opsi kueri tertentu, bukan menentukannya ulang untuk setiap kueri. Namun, QueryOptions
di Cloud NDB tidak mewarisi dari
google.appengine.datastore.datastore_rpc.Configuration sehingga tidak
mendukung metode ...datastore_rpc.Configuration.
Selain itu, google.appengine.datastore.datastore_query.Order telah
diganti dengan
google.cloud.ndb.query.PropertyOrder. Mirip dengan Order, class PropertyOrder
memungkinkan Anda menentukan tata urutan di beberapa kueri. Konstruktor PropertyOrder
sama dengan konstruktor untuk Order. Hanya nama
class-nya yang berubah.
| API yang Dihapus | Penggantian |
|---|---|
dari google.appengine.datastore.datastore_rpc.Configuration:deadline(value)on_completion(value)read_policy(value)force_writes(value)max_entity_groups_per_rpc(value)max_allocate_ids_keys(value)max_rpc_bytes(value)max_get_keys(value)max_put_entities(value)max_delete_keys(value)
Lihat kode sumber untuk deskripsi metode ini. |
Tidak ada |
google.appengine.ext.ndb.OrderContoh: order=Order(-Account.birthday, Account.name)
|
google.cloud.ndb.PropertyOrderContoh: google.cloud.ndb.PropertyOrder(-Account.birthday, Account.name)
|
Utils
Modul ndb.utils (google.appengine.ext.ndb.utils) tidak lagi
tersedia. Sebagian besar metode dalam modul tersebut bersifat internal untuk App Engine NDB, beberapa metode telah dihapus karena perbedaan
implementasi pada ndb baru, sementara metode lainnya tidak dipergunakan lagi oleh fitur
Python 3 yang baru.
Misalnya, dekorator posisi dalam modul utils lama mendeklarasikan bahwa hanya
argumen n pertama dari suatu fungsi atau metode yang dapat posisi. Namun, Python
3 dapat melakukannya menggunakan
argumen khusus kata kunci. Yang sebelumnya ditulis sebagai:
@utils.positional(2)
def function1(arg1, arg2, arg3=None, arg4=None)
pass
Dapat ditulis seperti ini di Python 3:
def function1(arg1, arg2, *, arg3=None, arg4=None)
pass
Namespace
Namespace memungkinkan aplikasi multitenant untuk menggunakan silo data terpisah bagi setiap tenant sambil tetap menggunakan database mode Datastore yang sama. Artinya, setiap tenant menyimpan data di namespace-nya sendiri.
Daripada menggunakan
google.appengine.api.namespacemanager khusus App Engine,
Anda perlu menentukan namespace default saat membuat klien Cloud NDB,
lalu menggunakan namespace default dengan memanggil metode Cloud NDB dalam
konteks runtime klien. Hal ini mengikuti pola yang sama dengan API Google Cloud
lainnya yang mendukung namespace.
| API yang Dihapus | Penggantian |
|---|---|
google.appengine.api.namespace_manager.namespace_manager.set_namespace(str)
dan google.appengine.api.namespacemanager.getnamespace()
|
client=google.cloud.ndb.Client(namespace="my namespace") with client.context() as context: key = ndb.Key("SomeKind", "SomeId") key-non-default-namespace=ndb.Key("SomeKind," "AnotherId", namespace="non-default-nspace") |
Semua metode google.appengine.api.namespacemanager lainnya |
Tidak ada |
Tasklet
Tasklet kini dapat menggunakan pernyataan return Python standar untuk
menampilkan hasil, bukan memunculkan pengecualian Return NDB. Contoh:
| Library App Engine NDB | Library Cloud NDB |
|---|---|
@ndb.tasklet def get_cart(): cart = yield CartItem.query().fetch_async() raise Return(cart) |
@ndb.tasklet def get_cart(): cart = yield CartItem.query().fetch_async() return cart |
Harap diingat bahwa Anda tetap dapat menampilkan hasil di Cloud NDB dengan memunculkan pengecualian Return,
tetapi tindakan itu tidak direkomendasikan.
Selain itu, metode dan subclass Tasklets berikut tidak lagi
tersedia, karena kebanyakan perubahan pada cara konteks NDB dibuat dan digunakan
di library Cloud NDB.
| API yang Dihapus | Penggantian |
|---|---|
dari
google.appengine.api.ext.ndb.tasklets:add_flow_exceptionmake_contextmake_default_contextset_context
|
Tidak ada |
dari
google.appengine.api.ext.ndb.tasklets:QueueFutureReducedFutureSerialQueueFuture
|
Tidak ada |
Pengecualian
Meskipun modul google.cloud.ndb.exceptions
dalam library Cloud NDB berisi banyak
pengecualian yang sama dari library App Engine NDB, tidak semua pengecualian
lama tersedia di perpustakaan baru. Tabel berikut mencantumkan
pengecualian yang tidak lagi tersedia:
| API yang Dihapus | Penggantian |
|---|---|
dari
google.appengine.api.datastore_errors:BadKeyErrorBadPropertyErrorCommittedButStillApplyingEntityNotFoundErrorInternalErrorNeedIndexErrorQueryNotFoundErrorReferencePropertyResolveErrorTimeoutTransactionFailedErrorTransactionNotFoundError
|
google.cloud.ndb.exceptions |
Mengaktifkan penyimpanan dalam cache data
Cloud NDB dapat menyimpan data dalam cache di penyimpanan data dalam memori Redis yang dikelola oleh Memorystore, Redis, atau sistem lainnya. Panduan ini menjelaskan cara menggunakan Memorystore for Redis untuk menyimpan data dalam cache:
Menyiapkan Akses VPC Serverless
Aplikasi Anda hanya dapat berkomunikasi dengan Memorystore melalui konektor Akses VPC Serverless. Untuk menyiapkan konektor Akses VPC Serverless:
Menyiapkan Memorystore for Redis
Untuk menyiapkan Memorystore for Redis:
Buat instance Redis di Memorystore. Saat Anda membuat instance:
Di bagian Region, pilih region yang sama dengan tempat aplikasi App Engine Anda berada.
Di bagian Authorized network, pilih jaringan yang sama dengan yang digunakan konektor Akses VPC Serverless Anda.
Catat alamat IP dan nomor port instance Redis yang Anda buat. Anda akan menggunakan informasi ini saat mengaktifkan penyimpanan dalam cache data untuk Cloud NDB.
Pastikan Anda menggunakan perintah
gcloud betauntuk men-deploy update aplikasi. Hanya perintah beta yang dapat memperbarui aplikasi untuk menggunakan konektor VPC.
Tambahkan URL koneksi Redis
Anda dapat terhubung ke cache Redis dengan menambahkan variabel lingkungan REDIS_CACHE_URL ke file app.yaml aplikasi Anda. Nilai
REDIS_CACHE_URL berbentuk sebagai berikut:
redis://IP address for your instance:port
Misalnya, Anda dapat menambahkan baris berikut ke file app.yaml aplikasi Anda:
env_variables:
REDIS_CACHE_URL: redis://10.0.0.3:6379
Membuat dan menggunakan objek cache Redis
Jika sudah menetapkan REDIS_CACHE_URL sebagai variabel lingkungan, Anda dapat membuat
objek RedisCache dengan satu baris kode, lalu menggunakan cache dengan meneruskannya
ke Client.context() saat menyiapkan konteks runtime:
client = ndb.Client()
global_cache = ndb.RedisCache.from_environment()
with client.context(global_cache=global_cache):
books = Book.query()
for book in books:
print(book.to_dict())
Jika REDIS_CACHE_URL tidak ditetapkan sebagai variabel lingkungan, Anda harus
membuat klien Redis dan meneruskan klien ke konstruktor
ndb.RedisCache(). Contoh:
global_cache = ndb.RedisCache(redis.StrictRedis(host=IP-address, port=redis_port))
Harap diingat bahwa Anda tidak perlu mendeklarasikan dependensi pada library klien Redis, karena library Cloud NDB sudah bergantung pada library klien Redis.
Lihat aplikasi contoh Memorystore untuk mengetahui contoh pembuatan klien Redis.
Menguji pembaruan Anda
Untuk menyiapkan database pengujian dan menjalankan aplikasi secara lokal sebelum men-deploy-nya ke App Engine:
Jalankan emulator lokal mode Datastore untuk menyimpan dan mengambil data.
Pastikan untuk mengikuti petunjuk untuk menetapkan variabel lingkungan agar aplikasi Anda terhubung ke emulator, bukan ke lingkungan mode Datastore production.
Anda juga dapat mengimpor data ke emulator jika ingin memulai pengujian dengan data yang telah dimuat sebelumnya ke dalam database.
Gunakan server pengembangan lokal untuk menjalankan aplikasi Anda.
Untuk memastikan variabel lingkungan
GOOGLE_CLOUD_PROJECTditetapkan dengan benar selama pengembangan lokal, lakukan inisialisasidev_appservermenggunakan parameter berikut:--application=PROJECT_ID
Ganti PROJECT_ID dengan project ID Google Cloud Anda. Anda dapat menemukan project ID dengan menjalankan perintah
gcloud config list projectatau melihat halaman project Anda di konsol Google Cloud .
Men-deploy aplikasi Anda
Setelah aplikasi Anda berjalan di server pengembangan lokal tanpa error:
Jika aplikasi berjalan tanpa error, gunakan pemisahan traffic untuk meningkatkan traffic aplikasi yang diupdate secara perlahan. Pantau aplikasi dengan cermat untuk menemukan masalah database sebelum mengarahkan lebih banyak traffic ke aplikasi yang telah diupdate.
Langkah berikutnya
- Untuk tutorial, lihat codelab Bermigrasi dari ndb App Engine ke Cloud NDB.
- Untuk mengetahui detail selengkapnya, lihat dokumentasi Cloud NDB.