1. Ringkasan
Serangkaian codelab Serverless Migration Station (tutorial praktik mandiri) dan video terkait bertujuan untuk membantu developer serverless Google Cloud memodernisasi aplikasi mereka dengan memandu mereka melalui satu atau beberapa migrasi, terutama beralih dari layanan lama. Dengan melakukannya, aplikasi Anda akan lebih portabel dan Anda akan memiliki lebih banyak opsi dan fleksibilitas, sehingga Anda dapat berintegrasi dengan dan mengakses berbagai produk Cloud serta mengupgrade ke rilis bahasa yang lebih baru dengan lebih mudah. Meskipun awalnya berfokus pada pengguna Cloud paling awal, terutama developer App Engine (lingkungan standar), seri ini cukup luas untuk mencakup platform serverless lainnya seperti Cloud Functions dan Cloud Run, atau di tempat lain jika berlaku.
Codelab ini mengajarkan cara menyertakan dan menggunakan tugas pull App Engine Task Queue ke aplikasi contoh dari codelab Modul 1. Kita akan menambahkan penggunaan tugas pull di tutorial Modul 18 ini, lalu memigrasikan penggunaan tersebut ke Cloud Pub/Sub di Modul 19. Pengguna yang menggunakan Task Queues untuk tugas push akan bermigrasi ke Cloud Tasks dan harus melihat Modul 7-9.
Anda akan mempelajari cara
- Menggunakan App Engine Task Queue API/layanan paket
- Menambahkan penggunaan pull queue ke aplikasi NDB App Engine Flask Python 2 dasar
Yang Anda butuhkan
- Project Google Cloud Platform dengan akun penagihan GCP yang aktif
- Keterampilan Python dasar
- Pengetahuan perintah Linux umum yang berfungsi
- Pengetahuan dasar tentang mengembangkan dan men-deploy aplikasi App Engine
- Aplikasi App Engine Modul 1 yang berfungsi (selesaikan codelab-nya [direkomendasikan] atau salin aplikasi dari repo)
Survei
Bagaimana Anda akan menggunakan tutorial ini?
Bagaimana penilaian Anda terhadap pengalaman dengan Python?
Bagaimana penilaian Anda terhadap pengalaman menggunakan layanan Google Cloud?
2. Latar belakang
Untuk bermigrasi dari tugas pull App Engine Task Queue, tambahkan penggunaannya ke aplikasi Flask dan App Engine NDB yang ada yang dihasilkan dari codelab Modul 1. Aplikasi contoh menampilkan kunjungan terbaru ke pengguna akhir. Tidak masalah, tetapi akan lebih menarik jika Anda juga melacak pengunjung untuk melihat siapa yang paling sering berkunjung.
Meskipun kita dapat menggunakan tugas push untuk jumlah pengunjung ini, kita ingin membagi tanggung jawab antara aplikasi contoh yang bertugas mendaftarkan kunjungan dan segera merespons pengguna, dan "pekerja" yang ditunjuk yang bertugas menghitung jumlah pengunjung di luar alur kerja permintaan-respons normal.
Untuk menerapkan desain ini, kita akan menambahkan penggunaan pull queue ke aplikasi utama serta mendukung fungsi pekerja. Worker dapat berjalan sebagai proses terpisah (seperti instance backend atau kode yang berjalan di VM yang selalu aktif), tugas cron, atau permintaan HTTP command line dasar menggunakan curl atau wget. Setelah integrasi ini, Anda dapat memigrasikan aplikasi ke Cloud Pub/Sub di codelab berikutnya (Modul 19).
Tutorial ini mencakup langkah-langkah berikut:
- Penyiapan/Prakerja
- Update konfigurasi
- Mengubah kode aplikasi
3. Penyiapan/Prakerja
Bagian ini menjelaskan cara:
- Menyiapkan project Cloud
- Dapatkan aplikasi contoh dasar pengukuran
- Deploy (ulang) dan validasi aplikasi dasar pengukuran
Langkah-langkah ini memastikan Anda memulai dengan kode yang berfungsi.
1. Siapkan project
Jika Anda sudah menyelesaikan codelab Modul 1, gunakan kembali project (dan kode) yang sama. Atau, buat project baru atau gunakan kembali project lain yang sudah ada. Pastikan project memiliki akun penagihan yang aktif dan aplikasi App Engine yang diaktifkan. Temukan project ID Anda karena Anda akan memerlukannya beberapa kali dalam codelab ini dan gunakan setiap kali Anda menemukan variabel PROJECT_ID.
2. Dapatkan aplikasi contoh dasar pengukuran
Salah satu prasyarat untuk codelab ini adalah memiliki aplikasi App Engine Modul 1 yang berfungsi. Selesaikan codelab Modul 1 (direkomendasikan) atau salin aplikasi Modul 1 dari repo. Baik Anda menggunakan kode Anda atau kode kami, kode Modul 1 adalah tempat kita akan "MEMULAI". Codelab ini akan memandu Anda melalui setiap langkah, yang diakhiri dengan kode yang menyerupai kode di folder repo Modul 18 "FINISH".
- START: Folder Modul 1 (Python 2)
- FINISH: Folder Modul 18 (Python 2)
- Seluruh repo (untuk melakukan clone atau mendownload file ZIP)
Terlepas dari aplikasi Modul 1 yang Anda gunakan, folder akan terlihat seperti output di bawah, mungkin dengan folder lib juga:
$ ls README.md appengine_config.py requirements.txt app.yaml main.py templates
3. Deploy (ulang) aplikasi dasar pengukuran
Lakukan langkah-langkah berikut untuk men-deploy aplikasi Modul 1:
- Hapus folder
libjika ada dan jalankan:pip install -t lib -r requirements.txtuntuk mengisi ulanglib. Anda mungkin perlu menggunakan perintahpip2jika Anda telah menginstal Python 2 dan 3. - Pastikan Anda telah menginstal dan menginisialisasi alat command line
gcloudserta meninjau penggunaannya. - Tetapkan project Cloud Anda dengan
gcloud config set projectPROJECT_IDjika Anda tidak ingin memasukkanPROJECT_IDdengan setiap perintahgcloudyang dikeluarkan. - Men-deploy aplikasi contoh dengan
gcloud app deploy - Pastikan aplikasi Modul 1 berjalan seperti yang diharapkan dan menampilkan kunjungan terbaru (seperti yang diilustrasikan di bawah)

4. Update konfigurasi
Tidak ada perubahan yang diperlukan pada file konfigurasi App Engine standar (app.yaml, requirements.txt, appengine_config.py). Sebagai gantinya, tambahkan file konfigurasi baru, queue.yaml, dengan konten berikut, dan letakkan di direktori tingkat teratas yang sama:
queue:
- name: pullq
mode: pull
File queue.yaml menentukan semua antrean tugas yang ada untuk aplikasi Anda (kecuali antrean default [push] yang dibuat secara otomatis oleh App Engine). Dalam hal ini, hanya ada satu, yaitu antrean penarikan bernama pullq. App Engine mewajibkan direktif mode ditentukan sebagai pull, atau akan membuat push queue secara default. Pelajari lebih lanjut cara membuat pull queue di dokumentasi. Lihat juga halaman referensi queue.yaml untuk opsi lainnya.
Deploy file ini secara terpisah dari aplikasi Anda. Anda tetap akan menggunakan gcloud app deploy, tetapi juga memberikan queue.yaml di command line:
$ gcloud app deploy queue.yaml Configurations to update: descriptor: [/tmp/mod18-gaepull/queue.yaml] type: [task queues] target project: [my-project] WARNING: Caution: You are updating queue configuration. This will override any changes performed using 'gcloud tasks'. More details at https://cloud.google.com/tasks/docs/queue-yaml Do you want to continue (Y/n)? Updating config [queue]...⠹WARNING: We are using the App Engine app location (us-central1) as the default location. Please use the "--location" flag if you want to use a different location. Updating config [queue]...done. Task queues have been updated. Visit the Cloud Platform Console Task Queues page to view your queues and cron jobs. $
5. Mengubah kode aplikasi
Bagian ini menampilkan update pada file berikut:
main.py— menambahkan penggunaan pull queue ke aplikasi utamatemplates/index.html— memperbarui template web untuk menampilkan data baru
Impor dan konstanta
Langkah pertama adalah menambahkan satu impor baru dan beberapa konstanta untuk mendukung antrean penarikan:
- Tambahkan impor library Task Queue,
google.appengine.api.taskqueue. - Tambahkan tiga konstanta untuk mendukung penyewaan jumlah maksimum tugas penarikan (
TASKS) selama satu jam (HOUR) dari antrean penarikan kami (QUEUE). - Tambahkan konstanta untuk menampilkan kunjungan terbaru serta pengunjung teratas (
LIMIT).
Di bawah ini adalah kode asli dan tampilannya setelah melakukan pembaruan ini:
SEBELUM:
from flask import Flask, render_template, request
from google.appengine.ext import ndb
app = Flask(__name__)
SETELAH:
from flask import Flask, render_template, request
from google.appengine.api import taskqueue
from google.appengine.ext import ndb
HOUR = 3600
LIMIT = 10
TASKS = 1000
QNAME = 'pullq'
QUEUE = taskqueue.Queue(QNAME)
app = Flask(__name__)
Menambahkan tugas pull (mengumpulkan data untuk tugas & membuat tugas di pull queue)
Model data Visit tetap sama, begitu juga dengan kueri untuk kunjungan yang akan ditampilkan di fetch_visits(). Satu-satunya perubahan yang diperlukan di bagian kode ini adalah di store_visit(). Selain mendaftarkan kunjungan, tambahkan tugas ke antrean tarik dengan alamat IP pengunjung sehingga pekerja dapat menambah penghitung pengunjung.
SEBELUM:
class Visit(ndb.Model):
'Visit entity registers visitor IP address & timestamp'
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def store_visit(remote_addr, user_agent):
'create new Visit entity in Datastore'
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
def fetch_visits(limit):
'get most recent visits'
return Visit.query().order(-Visit.timestamp).fetch(limit)
SETELAH:
class Visit(ndb.Model):
'Visit entity registers visitor IP address & timestamp'
visitor = ndb.StringProperty()
timestamp = ndb.DateTimeProperty(auto_now_add=True)
def store_visit(remote_addr, user_agent):
'create new Visit in Datastore and queue request to bump visitor count'
Visit(visitor='{}: {}'.format(remote_addr, user_agent)).put()
QUEUE.add(taskqueue.Task(payload=remote_addr, method='PULL'))
def fetch_visits(limit):
'get most recent visits'
return Visit.query().order(-Visit.timestamp).fetch(limit)
Membuat model data dan fungsi kueri untuk pelacakan pengunjung
Tambahkan model data VisitorCount untuk melacak pengunjung; model ini harus memiliki kolom untuk visitor itu sendiri serta bilangan bulat counter untuk melacak jumlah kunjungan. Kemudian, tambahkan fungsi baru (atau, bisa juga berupa classmethod Python) bernama fetch_counts() untuk membuat kueri dan menampilkan pengunjung teratas dalam urutan paling banyak ke paling sedikit. Tambahkan class dan fungsi tepat di bawah isi fetch_visits():
class VisitorCount(ndb.Model):
visitor = ndb.StringProperty(repeated=False, required=True)
counter = ndb.IntegerProperty()
def fetch_counts(limit):
'get top visitors'
return VisitCount.query().order(-VisitCount.counter).fetch(limit)
Menambahkan kode pekerja
Tambahkan fungsi baru log_visitors() untuk mencatat pengunjung melalui permintaan GET ke /log. Fungsi ini menggunakan kamus/hash untuk melacak jumlah pengunjung terbaru, yang menyewakan tugas sebanyak mungkin selama satu jam. Untuk setiap tugas, tugas ini mencatat semua kunjungan oleh pengunjung yang sama. Dengan data yang ada, aplikasi kemudian memperbarui semua entitas VisitorCount yang sesuai yang sudah ada di Datastore atau membuat yang baru jika diperlukan. Langkah terakhir menampilkan pesan teks biasa yang menunjukkan jumlah pengunjung yang terdaftar dari jumlah tugas yang diproses. Tambahkan fungsi ini ke main.py tepat di bawah fetch_counts():
@app.route('/log')
def log_visitors():
'worker processes recent visitor counts and updates them in Datastore'
# tally recent visitor counts from queue then delete those tasks
tallies = {}
tasks = QUEUE.lease_tasks(HOUR, TASKS)
for task in tasks:
visitor = task.payload
tallies[visitor] = tallies.get(visitor, 0) + 1
if tasks:
QUEUE.delete_tasks(tasks)
# increment those counts in Datastore and return
for visitor in tallies:
counter = VisitorCount.query(VisitorCount.visitor == visitor).get()
if not counter:
counter = VisitorCount(visitor=visitor, counter=0)
counter.put()
counter.counter += tallies[visitor]
counter.put()
return 'DONE (with %d task[s] logging %d visitor[s])\r\n' % (
len(tasks), len(tallies))
Memperbarui handler utama dengan data tampilan baru
Untuk menampilkan pengunjung teratas, perbarui handler utama root() untuk memanggil fetch_counts(). Selain itu, template akan diperbarui untuk menampilkan jumlah pengunjung teratas dan kunjungan terbaru. Gabungkan jumlah pengunjung beserta kunjungan terbaru dari panggilan ke fetch_visits() dan masukkan ke dalam satu context untuk diteruskan ke template web. Berikut adalah kode sebelum dan setelah perubahan ini dilakukan:
SEBELUM:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
visits = fetch_visits(10)
return render_template('index.html', visits=visits)
SETELAH:
@app.route('/')
def root():
'main application (GET) handler'
store_visit(request.remote_addr, request.user_agent)
context = {
'limit': LIMIT,
'visits': fetch_visits(LIMIT),
'counts': fetch_counts(LIMIT),
}
return render_template('index.html', **context)
Berikut semua perubahan yang diperlukan dari main.py, dan berikut representasi bergambar dari update tersebut untuk tujuan ilustrasi guna memberi Anda gambaran luas tentang perubahan yang Anda lakukan pada main.py:

Memperbarui template web dengan data tampilan baru
Template web templates/index.html memerlukan update untuk menampilkan pengunjung teratas selain payload normal pengunjung terbaru. Letakkan pengunjung teratas dan jumlahnya ke dalam tabel di bagian atas halaman dan terus render kunjungan terbaru seperti sebelumnya. Satu-satunya perubahan lainnya adalah menentukan angka yang ditampilkan melalui variabel limit, bukan meng-hardcode angka. Berikut adalah pembaruan yang harus Anda lakukan pada template web:
SEBELUM:
<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>
<h1>VisitMe example</h1>
<h3>Last 10 visits</h3>
<ul>
{% for visit in visits %}
<li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>
SETELAH:
<!doctype html>
<html>
<head>
<title>VisitMe Example</title>
<body>
<h1>VisitMe example</h1>
<h3>Top {{ limit }} visitors</h3>
<table border=1 cellspacing=0 cellpadding=2>
<tr><th>Visitor</th><th>Visits</th></tr>
{% for count in counts %}
<tr><td>{{ count.visitor|e }}</td><td align="center">{{ count.counter }}</td></tr>
{% endfor %}
</table>
<h3>Last {{ limit }} visits</h3>
<ul>
{% for visit in visits %}
<li>{{ visit.timestamp.ctime() }} from {{ visit.visitor }}</li>
{% endfor %}
</ul>
Dengan demikian, perubahan yang diperlukan untuk menambahkan penggunaan tugas pull App Engine Task Queue ke aplikasi contoh Modul 1 telah selesai. Direktori Anda kini merepresentasikan aplikasi contoh Modul 18 dan harus berisi file berikut:
$ ls README.md appengine_config.py queue.yaml templates app.yaml main.py requirements.txt
6. Ringkasan/Pembersihan
Bagian ini mengakhiri codelab ini dengan men-deploy aplikasi, memverifikasi bahwa aplikasi berfungsi seperti yang diinginkan dan dalam output yang ditampilkan. Jalankan pekerja secara terpisah untuk memproses jumlah pengunjung. Setelah validasi aplikasi, lakukan langkah-langkah pembersihan dan pertimbangkan langkah berikutnya.
Men-deploy dan memverifikasi aplikasi
Pastikan Anda telah menyiapkan antrean tarik seperti yang kita lakukan di bagian atas codelab ini dengan gcloud app deploy queue.yaml. Jika sudah selesai dan aplikasi contoh Anda siap digunakan, deploy aplikasi Anda dengan gcloud app deploy. Output harus identik dengan aplikasi Modul 1, kecuali sekarang menampilkan tabel "pengunjung teratas" di bagian atas:

Meskipun frontend web yang diperbarui menampilkan pengunjung teratas dan kunjungan terbaru, perhatikan bahwa jumlah pengunjung tidak menyertakan kunjungan ini. Aplikasi menampilkan jumlah pengunjung sebelumnya sambil menjatuhkan tugas baru yang meningkatkan jumlah pengunjung ini dalam antrean pull, tugas yang menunggu untuk diproses.
Anda dapat menjalankan tugas dengan memanggil /log, dengan berbagai cara:
- Layanan backend App Engine
- Pekerjaan
cron - Browser web
- Permintaan HTTP command line (
curl,wget, dll.)
Misalnya, jika Anda menggunakan curl untuk mengirim permintaan GET ke /log, output Anda akan terlihat seperti ini, dengan asumsi Anda memberikan PROJECT_ID:
$ curl https://PROJECT_ID.appspot.com/log DONE (with 1 task[s] logging 1 visitor[s])
Jumlah yang diperbarui akan ditampilkan pada kunjungan situs berikutnya. Selesai!
Selamat karena telah berhasil menyelesaikan codelab ini untuk menambahkan penggunaan layanan antrean pull App Engine Task Queue ke aplikasi contoh. Sekarang siap untuk dimigrasikan ke Cloud Pub/Sub, Cloud NDB, dan Python 3 di Modul 19.
Pembersihan
Umum
Jika Anda sudah selesai untuk saat ini, sebaiknya nonaktifkan aplikasi App Engine untuk menghindari penagihan. Namun, jika Anda ingin menguji atau bereksperimen lebih lanjut, platform App Engine memiliki kuota gratis, sehingga selama Anda tidak melebihi tingkat penggunaan tersebut, Anda tidak akan dikenai biaya. Biaya tersebut adalah untuk komputasi, tetapi mungkin juga ada biaya untuk layanan App Engine yang relevan, jadi periksa halaman harganya untuk mengetahui informasi selengkapnya. Jika migrasi ini melibatkan layanan Cloud lainnya, layanan tersebut akan ditagih secara terpisah. Dalam kedua kasus tersebut, jika berlaku, lihat bagian "Khusus untuk codelab ini" di bawah.
Untuk pengungkapan penuh, men-deploy ke platform komputasi serverless Google Cloud seperti App Engine akan menimbulkan biaya build dan penyimpanan kecil. Cloud Build memiliki kuota gratisnya sendiri seperti halnya Cloud Storage. Penyimpanan gambar tersebut menggunakan sebagian kuota tersebut. Namun, Anda mungkin tinggal di wilayah yang tidak memiliki paket gratis tersebut, jadi perhatikan penggunaan penyimpanan Anda untuk meminimalkan potensi biaya. "Folder" Cloud Storage tertentu yang harus Anda tinjau meliputi:
console.cloud.google.com/storage/browser/LOC.artifacts.PROJECT_ID.appspot.com/containers/imagesconsole.cloud.google.com/storage/browser/staging.PROJECT_ID.appspot.com- Link penyimpanan di atas bergantung pada
PROJECT_IDdan *LOC*Anda, misalnya, "us" jika aplikasi Anda dihosting di Amerika Serikat.
Di sisi lain, jika Anda tidak akan melanjutkan aplikasi ini atau codelab migrasi terkait lainnya dan ingin menghapus semuanya, hentikan project Anda.
Khusus untuk codelab ini
Layanan yang tercantum di bawah ini unik untuk codelab ini. Lihat dokumentasi setiap produk untuk mengetahui informasi selengkapnya:
- Layanan App Engine Task Queue tidak menimbulkan penagihan tambahan per halaman harga untuk layanan paket lama seperti Task Queue.
- Layanan App Engine Datastore disediakan oleh Cloud Datastore (Cloud Firestore dalam mode Datastore) yang juga memiliki paket gratis; lihat halaman harganya untuk mengetahui informasi selengkapnya.
Langkah berikutnya
Dalam "migrasi" ini, Anda menambahkan penggunaan antrean push Task Queue ke aplikasi contoh Modul 1, dengan menambahkan dukungan untuk melacak pengunjung, sehingga mengimplementasikan aplikasi contoh Modul 18. Dalam migrasi berikutnya, Anda akan mengupgrade tugas pull App Engine ke Cloud Pub/Sub. Mulai akhir tahun 2021, pengguna tidak lagi diwajibkan untuk bermigrasi ke Cloud Pub/Sub saat mengupgrade ke Python 3. Baca lebih lanjut tentang hal ini di bagian berikutnya.
Untuk bermigrasi ke Cloud Pub/Sub, lihat codelab Modul 19. Selain itu, ada migrasi tambahan yang perlu dipertimbangkan, seperti Cloud Datastore, Cloud Memorystore, Cloud Storage, atau Cloud Tasks (push queue). Ada juga migrasi lintas produk ke Cloud Run dan Cloud Functions. Semua konten Serverless Migration Station (codelab, video, kode sumber [jika tersedia]) dapat diakses di repositori open source-nya.
7. Migrasi ke Python 3
Pada Musim Gugur 2021, tim App Engine memperluas dukungan banyak layanan paket ke runtime generasi ke-2 (yang memiliki runtime generasi ke-1). Oleh karena itu, Anda tidak lagi diwajibkan untuk bermigrasi dari layanan paket seperti Task Queue App Engine ke layanan Cloud mandiri atau pihak ketiga seperti Cloud Pub/Sub saat mem-porting aplikasi ke Python 3. Dengan kata lain, Anda dapat terus menggunakan Task Queue di aplikasi App Engine Python 3 selama Anda menyesuaikan kode untuk mengakses layanan paket dari runtime generasi berikutnya.
Anda dapat mempelajari lebih lanjut cara memigrasikan penggunaan layanan paket ke Python 3 dalam codelab Modul 17 dan video terkait. Meskipun topik tersebut di luar cakupan Modul 18, di bawah ini adalah versi Python 3 dari aplikasi Modul 1 yang di-porting ke Python 3 dan masih menggunakan App Engine NDB. (Pada suatu saat, aplikasi Modul 18 versi Python 3 juga akan tersedia.)
8. Referensi lainnya
Di bawah ini tercantum resource tambahan bagi developer yang ingin mempelajari lebih lanjut Modul Migrasi ini atau yang terkait, serta produk terkait. Hal ini mencakup tempat untuk memberikan masukan tentang konten ini, link ke kode, dan berbagai bagian dokumentasi yang mungkin berguna bagi Anda.
Masalah/masukan codelab
Jika Anda menemukan masalah dengan codelab ini, telusuri masalah Anda terlebih dahulu sebelum mengajukan masalah. Link untuk menelusuri dan membuat masalah baru:
Referensi migrasi
Link ke folder repo untuk Modul 1 (START) dan Modul 18 (FINISH) dapat ditemukan pada tabel di bawah. Link tersebut juga dapat diakses dari repo untuk semua migrasi codelab App Engine; clone atau download file ZIP.
Codelab | Python 2 | Python 3 |
code (tidak ditampilkan dalam tutorial ini) | ||
Modul 18 (codelab ini) | T/A |
Referensi online
Berikut adalah referensi yang relevan untuk tutorial ini:
Task Queue App Engine
- Ringkasan App Engine Task Queue
- Ringkasan antrean pull Task Queue App Engine
- Aplikasi contoh lengkap antrean pull Task Queue App Engine
- Membuat antrean pull Task Queue
- Video peluncuran antrean penarikan Google I/O 2011 ( aplikasi contoh Votelator)
queue.yamlreferensiqueue.yamlvs. Cloud Tasks- Panduan migrasi pull queue ke Pub/Sub
- Contoh dokumentasi pull queue Task Queue App Engine ke Cloud Pub/Sub
Platform App Engine
Dokumentasi App Engine
Runtime Python 2 App Engine (lingkungan standar)
Runtime Python 3 App Engine (lingkungan standar)
Perbedaan antara runtime Python 2 & 3 App Engine (lingkungan standar)
Panduan migrasi aplikasi Python 2 ke 3 App Engine (lingkungan standar)
Informasi harga dan kuota App Engine
Peluncuran platform App Engine generasi kedua (2018)
Dukungan jangka panjang untuk runtime lama
Contoh migrasi dokumentasi
Informasi Cloud lainnya
- Python di Google Cloud Platform
- Library klien Python Google Cloud
- Paket "Selalu Gratis" Google Cloud
- Google Cloud SDK (alat command line
gcloud) - Semua dokumentasi Google Cloud
Video
- Serverless Migration Station
- Ekspedisi Tanpa Server
- Berlangganan Google Cloud Tech
- Subscribe ke Google Developers
Lisensi
Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.