Halaman ini menjelaskan cara memigrasikan kode pull queue dari Task Queue ke Pub/Sub. Pub/Sub kini merupakan cara yang lebih disukai untuk melakukan tugas pull queue di App Engine.
Jika aplikasi Anda menggunakan pull queue dan push queue, gunakan panduan ini untuk memigrasikan
pull queue Anda ke Pub/Sub sebelum memigrasikan push queue ke
Cloud Tasks layanan push queue baru. Sebaiknya jangan memigrasikan pull queue Anda
setelah memigrasikan push queue ke Cloud Tasks karena penggunaan
file queue.yaml
yang diperlukan cenderung menyebabkan
perilaku yang tidak terduga dengan Cloud Tasks.
Fitur yang saat ini tidak tersedia di Pub/Sub
Fitur Task Queue berikut saat ini tidak tersedia di Pub/Sub:
- Pengelompokan berdasarkan tag
- Penghapusan duplikat otomatis
Harga dan kuota
Memigrasikan pull queue ke Pub/Sub dapat memengaruhi harga dan kuota untuk aplikasi Anda.
Harga
Pub/Sub memiliki pricing sendiri. Seperti halnya Task Queue, mengirim permintaan ke aplikasi App Engine dengan Pub/Sub dapat menyebabkan aplikasi Anda dikenakan biaya.
Kuota
quotas Pub/Sub berbeda dari kuota untuk Task Queue. Seperti halnya Task Queue, mengirim permintaan ke aplikasi App Engine dari Pub/Sub dapat memengaruhi kuota permintaan App Engine Anda.
Sebelum 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.Bagian berikut membahas langkah-langkah penyiapan sebelum memigrasikan pull queue Anda ke Pub/Sub.
Mengaktifkan Pub/Sub API
Untuk mengaktifkan Pub/Sub API, klik Aktifkan di Pub/Sub API paa Library API. Jika melihat tombol Kelola dan bukan tombol Aktifkan, berarti sebelumnya Anda telah mengaktifkan Pub/Sub API untuk project tersebut dan tidak perlu melakukan tindakan ini lagi.
Mengautentikasi aplikasi ke Pub/Sub API
Anda harus mengautentikasi aplikasi ke Pub/Sub API. Bagian ini membahas autentikasi untuk dua kasus penggunaan yang berbeda.
Untuk mengembangkan atau menguji aplikasi secara lokal, sebaiknya gunakan akun layanan. Untuk petunjuk tentang cara menyiapkan akun layanan dan menghubungkannya ke aplikasi Anda, baca Mendapatkan dan memberikan kredensial akun layanan secara manual.
Untuk men-deploy aplikasi di App Engine, Anda tidak perlu memberikan autentikasi baru. Kredensial Default Aplikasi (ADC) menyimpulkan detail autentikasi untuk aplikasi App Engine.
Mendownload Google Cloud CLI
Download dan instal Google Cloud CLI untuk menggunakan gcloud CLI dengan Pub/Sub API jika sebelumnya Anda belum menginstalnya. Jalankan perintah berikut dari terminal Anda jika Anda sudah menginstal Google Cloud CLI.
gcloud components update
Mengimpor Library Klien Cloud
Ikuti langkah-langkah di bawah ini untuk menggunakan library klien Python Pub/Sub dengan aplikasi App Engine Anda yang ada:
Update file
app.yaml
. Ikuti petunjuk untuk versi Python Anda:Python 2
Untuk aplikasi Python 2, tambahkan versi terbaru library
grpcio
.Berikut adalah contoh file
app.yaml
:runtime: python27 threadsafe: yes api_version: 1 libraries: - name: grpcio version: latest
Python 3
Untuk aplikasi Python 3, tentukan elemen
runtime
di fileapp.yaml
dengan versi Python 3 yang didukung. Contoh:runtime: python310 # or another support version
Runtime Python 3 menginstal library secara otomatis, sehingga Anda tidak perlu menentukan library bawaan dari runtime Python 2 sebelumnya. Jika aplikasi Python 3 Anda menggunakan layanan paket lama lainnya saat bermigrasi, Anda dapat terus menentukan library bawaan yang diperlukan. Jika tidak, Anda dapat menghapus baris yang tidak diperlukan dalam file
app.yaml
.Perbarui file
requirements.txt
. Ikuti petunjuk untuk versi python Anda:Python 2
Tambahkan Library Klien Cloud untuk Pub/Sub ke daftar dependensi dalam file
requirements.txt
.google-cloud-pubsub
Lalu, jalankan
pip install -t lib -r requirements.txt
untuk mengupdate daftar library yang tersedia untuk aplikasi Anda.Python 3
Tambahkan Library Klien Cloud untuk Pub/Sub ke daftar dependensi dalam file
requirements.txt
.google-cloud-pubsub
App Engine otomatis menginstal dependensi ini selama deployment aplikasi di runtime Python 3, jadi hapus folder
lib
jika ada.Untuk aplikasi Python 2, jika aplikasi menggunakan library bawaan atau yang disalin, Anda harus menentukan jalur tersebut dalam file
appengine_config.py
, yang terletak di folder yang sama dengan fileapp.yaml
Anda:import pkg_resources from google.appengine.ext import vendor # Set PATH to your libraries folder. PATH = 'lib' # Add libraries installed in the PATH folder. vendor.add(PATH) # Add libraries to pkg_resources working set to find the distribution. pkg_resources.working_set.add_entry(PATH)
File
appengine_config.py
di atas menganggap bahwa direktori kerja saat ini adalah tempat folderlib
berada. Dalam beberapa kasus, seperti pengujian unit, direktori kerja saat ini dapat berbeda. Untuk menghindari error, Anda dapat secara eksplisit meneruskan jalur lengkap ke folderlib
menggunakan:import os path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
Impor library klien Python Pub/Sub di file apa pun yang menggunakan pull queue dari Task Queue API:
from google.cloud import pubsub
Pub/Sub dan pull queue
Perbandingan fitur
Pub/Sub mengirimkan tugas ke worker melalui hubungan penayang/pelanggan. Langganan pull di Pub/Sub menyerupai pull queue di Task Queue karena pelanggan mengambil pesan dari topik. Tabel di bawah ini mencantumkan fitur inti untuk pull queue di Task Queue dan fitur terkait untuk langganan pull di Pub/Sub.
Fitur Task Queue | Fitur Pub/Sub |
---|---|
Antrean | Topik |
Tugas | Pesan |
Pekerja | Pelanggan |
Untuk mempelajari arsitektur Pub/Sub lebih lanjut, baca Cloud Pub/Sub: Layanan Pesan Berskala Google.
Perbandingan alur kerja
Di bawah ini adalah perbandingan alur kerja standar untuk pull queue di Task Queue dan langganan pull di Pub/Sub.
Alur kerja Task Queue | Alur kerja Pub/Sub |
---|---|
Anda membuat pull queue | Anda membuat topik dan membuat pelanggan Anda (yaitu worker) berlangganan ke topik tersebut |
Anda membuat dan menambahkan tugas ke dalam antrean | Anda membuat pesan dan memublikasikannya ke topik |
Worker menyewakan tugas | Pelanggan mengambil pesan dari topik |
Worker memproses tugas | Pelanggan memproses pesan |
Worker menghapus tugas dari antrean | Pelanggan mengonfirmasi pesan |
Masa sewa berakhir | Topik akan menghapus pesan saat semua pelanggannya telah mengonfirmasi pesan |
Membuat langganan pull di Pub/Sub
Anda dapat menggunakan langganan pull Pub/Sub seperti pull queue Task Queue. Langganan suatu topik tidak akan habis masa berlakunya dan bisa ada secara bersamaan untuk beberapa worker. Artinya, pesan dapat diproses oleh lebih dari satu worker yang merupakan salah satu kasus penggunaan utama untuk Pub/Sub. Untuk membuat ulang pull queue Task Queue sebagai langganan pull Pub/Sub, buat topik untuk setiap worker dan pastikan hanya worker terkait saja yang berlangganan ke topik tersebut. Hal ini memastikan bahwa setiap pesan diproses oleh tepat satu worker seperti dalam Task Queue. Untuk mempelajari cara membuat dan mengelola langganan pull, baca mengelola topik dan langganan.
Menghapus pull queue
Setelah memigrasikan pull queue Task Queue ke
langganan pull Pub/Sub, hapus pull queue dari
Task Queue menggunakan file queue.yaml
Anda. Sebaiknya hapus setiap pull queue
sebelum memigrasikan yang berikutnya. Hal ini akan mencegah aplikasi
menduplikasi tugas yang diterimanya dari langganan pull
Pub/Sub baru saat Anda memigrasikan pull queue lainnya. Perlu diperhatikan bahwa dampak terhadap kuota deployment App Engine Anda bisa lebih signifikan apabila menghapus pull queue Task Queue satu per satu, dibandingkan dengan menghapus satu deployment.
Setelah menghapus semua pull queue dari Task Queue, Anda dapat
menghapus file queue.yaml
dari deployment aplikasi Anda di masa mendatang.
Jika aplikasi Anda hanya menggunakan pull queue, hapus semua referensi ke Task Queue API dalam kode Anda. Jika aplikasi menggunakan pull queue dan push queue, Anda dapat menghapus referensi ke Task Queue API yang ada di dalam file yang hanya menggunakan pull queue, atau menunggu hingga Anda memigrasikan push queue, lalu menghapus referensi ke Task Queue API dari semua file.
Langkah selanjutnya
- Dokumentasi Pub/Sub
- Memigrasikan push queue
- Untuk tutorial langsung, lihat Bermigrasi dari pull queue Task Queue App Engine ke codelab Pub/Sub.