Questa pagina spiega come eseguire la migrazione del codice delle code in modalità pull dalle code di attività a Pub/Sub. Pub/Sub è ora il metodo preferito per eseguire il lavoro delle coda in modalità pull in App Engine.
Se la tua app utilizza sia code in modalità pull sia code in modalità push, utilizza questa guida per eseguire la migrazione
le code in modalità pull a Pub/Sub prima di eseguire la migrazione delle code in modalità push
il nuovo servizio di coda in modalità push
Cloud Tasks. Sconsigliamo di eseguire la migrazione delle code pull
dopo aver eseguito la migrazione delle code push a Cloud Tasks
perché l'utilizzo obbligatorio del file queue.yaml
potrebbe causare comportamenti imprevisti
con Cloud Tasks.
Funzionalità non attualmente disponibili in Pub/Sub
Le seguenti funzionalità di code di lavoro non sono attualmente disponibili in Pub/Sub:
- Raggruppamento in batch per tag
- Deduplica automatica
Prezzi e quote
La migrazione delle code in modalità pull a Pub/Sub potrebbe influire sui prezzi e quote per la tua app.
Prezzi
Pub/Sub applica prezzi specifici. Come con Code di attività di inviare richieste alla tua app App Engine con Pub/Sub può comportano costi aggiuntivi per la tua app.
Quote
Le quote di Pub/Sub sono diverse da quelle per le code di attività. Come per le code di attività, l'invio di richieste all'app App Engine da Pub/Sub potrebbe influire sulle quote di richiesta di App Engine.
Prima della migrazione
Se non l'hai ancora fatto, configura il tuo Ambiente di sviluppo Python per utilizzare una versione Python. compatibile con Google Cloud e installare strumenti di test per creare in ambienti Python isolati.Le sezioni seguenti illustrano i passaggi di configurazione prima di eseguire la migrazione delle code pull a Pub/Sub.
Attivazione dell'API Pub/Sub
Per abilitare l'API Pub/Sub, fai clic su Abilita nella API Pub/Sub nella libreria API. Se viene visualizzato un pulsante Gestisci anziché un pulsante Attiva, significa che hai già attivato l'API Pub/Sub per il tuo progetto e non devi ripetere l'operazione.
Autenticazione dell'app nell'API Pub/Sub
Devi autenticare la tua app nell'API Pub/Sub. Questa sezione illustra l'autenticazione per due diversi casi d'uso.
Per sviluppare o testare la tua app localmente, ti consigliamo di utilizzare un account di servizio. Per istruzioni su come configurare un account di servizio e collegarlo alla tua app, leggi Ottenere e fornire manualmente le credenziali dell'account di servizio.
Per eseguire il deployment della tua app su App Engine, non devi fornire nuovi autenticazione. Le credenziali predefinite dell'applicazione (ADC) deducono l'autenticazione per le app di App Engine.
Download di Google Cloud CLI
Se non l'hai ancora fatto, scarica e installa Google Cloud CLI per utilizzare gcloud CLI con l'API Pub/Sub. Esegui il seguente comando dal terminale se hai già installato Google Cloud CLI.
gcloud components update
Importazione delle librerie client di Cloud
Segui questi passaggi per utilizzare Pub/Sub Libreria client Python con l'app App Engine esistente:
Aggiorna il file
app.yaml
. Segui le istruzioni per la tua versione di Python:Python 2
Per le app Python 2, aggiungi le versioni più recenti della libreria
grpcio
.Di seguito è riportato un file
app.yaml
di esempio:runtime: python27 threadsafe: yes api_version: 1 libraries: - name: grpcio version: latest
Python 3
Per le app Python 3, specifica l'elemento
runtime
nel fileapp.yaml
con una versione Python 3 supportata. Ad esempio:runtime: python310 # or another support version
Il runtime Python 3 installa le librerie automaticamente, quindi non è necessario specificare le librerie integrate del runtime Python 2 precedente. Se la tua app Python 3 utilizza altri servizi in bundle legacy quando migrazione, puoi continuare a specificare le librerie integrate necessarie. In alternativa, puoi eliminare le righe non necessarie nel file
app.yaml
.Aggiorna il file
requirements.txt
. Segui le istruzioni relative alla tua versione di Python:Python 2
Aggiungi le librerie client di Cloud per Pub/Sub al tuo elenco delle dipendenze nel file
requirements.txt
.google-cloud-pubsub
Poi esegui
pip install -t lib -r requirements.txt
per aggiornare l'elenco librerie disponibili per la tua app.Python 3
Aggiungi le librerie client Cloud per Pub/Sub all'elenco delle dipendenze nel file
requirements.txt
.google-cloud-pubsub
App Engine installa automaticamente queste dipendenze durante il deployment dell'app nel runtime di Python 3, quindi elimina la cartella
lib
, se esistente.Per le app Python 2, se la tua app utilizza librerie incorporate o copiate, devi specificare i percorsi nel file
appengine_config.py
, che si trova nella stessa cartella del fileapp.yaml
: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)
Il file
appengine_config.py
riportato sopra presuppone che la directory di lavoro corrente sia la posizione in cui si trova la cartellalib
. In alcuni casi, ad esempio per i test di unità, la directory di lavoro corrente può essere diversa. Per evitare errori, puoi indicare esplicitamente il percorso completo della cartellalib
utilizzando:import os path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
Importa la libreria client Python Pub/Sub in tutti i file che utilizzano le code pull dell'API Task Queues:
from google.cloud import pubsub
Code in Pub/Sub e in modalità pull
Confronto delle funzioni
Pub/Sub invia il lavoro ai worker tramite un publisher/abbonato relazione tra di noi. Una sottoscrizione pull in Pub/Sub è come una coda in modalità pull nelle code di attività perché il sottoscrittore esegue il pull del messaggio dall'argomento. Nella tabella seguente sono elencati i la funzionalità principale per le code in modalità pull nelle code di attività e per le sottoscrizioni pull in Pub/Sub.
Funzionalità code di attività | Funzionalità Pub/Sub |
---|---|
Coda | Argomento |
Attività | Messaggio |
Worker | Sottoscrittore |
Per saperne di più sull'architettura Pub/Sub, leggi Cloud Pub/Sub: un servizio di messaggistica su scala Google.
Confronto dei flussi di lavoro
Di seguito è riportato un confronto di un flusso di lavoro tipico per una coda in modalità pull in code di attività e un sottoscrizione pull in Pub/Sub.
Flusso di lavoro delle code di attività | Flusso di lavoro di Pub/Sub |
---|---|
Tu crei la coda in modalità pull. | Tu crei l'argomento e sottoscrivi il tuo sottoscrittore (ossia worker) a l'argomento |
Creazione e messa in coda dell'attività | Crea il messaggio e pubblicalo nell'argomento |
Il worker acquisisce in leasing l'attività | Il sottoscrittore esegue il pull del messaggio dall'argomento |
Il worker elabora l'attività. | Il sottoscrittore elabora il messaggio |
Il worker elimina l'attività dalla coda | Il sottoscrittore conferma il messaggio |
Il contratto di locazione scade | L'argomento elimina il messaggio quando tutti i relativi sottoscrittori ha confermato il messaggio |
Creazione di sottoscrizioni pull in Pub/Sub
Puoi utilizzare una sottoscrizione al pull Pub/Sub come una coda pull di code di attività. Le sottoscrizioni a un argomento non scadono e possono esistere contemporaneamente per più worker. Ciò significa che un messaggio può essere elaborato da più di un worker, uno dei casi d'uso principali di Pub/Sub. Per ricreare le code pull di Task Queues come sottoscrizioni pull Pub/Sub, crea un argomento per ogni worker e sottoscrivi solo il worker associato all'argomento. Ciò garantisce che ogni messaggio viene elaborato esattamente da un worker come Code di attività. Per scoprire come creare e gestire gli abbonamenti pull, consulta la sezione sulla gestione di argomenti e abbonamenti.
Eliminazione delle code in modalità pull
Dopo aver eseguito la migrazione delle code di pull delle code di attività a
sottoscrizioni al pull Pub/Sub, eliminale da
Code di attività utilizzando il file queue.yaml
. Ti consigliamo di eliminare ogni coda di pull prima di eseguire la migrazione della successiva. Questo impedisce alla tua app
duplicando il lavoro che riceve dal nuovo pull Pub/Sub
di sottoscrizione durante la migrazione delle altre code in pull. Tieni presente che l'eliminazione delle code pull Task Queues una alla volta anziché in un unico deployment potrebbe avere un effetto maggiore sulla quota di deployment di App Engine.
Dopo aver eliminato tutte le code in modalità pull dalle code di attività, puoi
ometti il file queue.yaml
dai deployment futuri della tua app.
Se la tua app utilizza solo code pull, rimuovi tutti i riferimenti all'API Task Queues nel codice. Se la tua app utilizza sia le code pull sia le code push, puoi rimuovere i riferimenti all'API Task Queues che si verificano nei file che utilizzano solo le code pull oppure attendere di aver eseguito la migrazione anche delle code push e poi rimuovere i riferimenti all'API Task Queues da tutti i file.
Passaggi successivi
- Documentazione di Pub/Sub
- Migrazione delle code push
- Per un tutorial pratico, consulta Eseguire la migrazione dalla coda di attività di App Engine eseguire il pull delle code nel codelab Pub/Sub.