Questa pagina descrive come eseguire la migrazione del codice delle code in modalità push dalle code di attività a Cloud Tasks. Cloud Tasks è è ora il modo migliore per lavorare con le code in modalità push di App Engine.
Cloud Tasks ti consente di accedere allo stesso servizio a cui accedi con l'API RPC Task Queues. Ciò significa che non hai bisogno per ricreare le code e le attività di push esistenti. Tuttavia, devi eseguire la migrazione codice che crea o interagisce con code in modalità push o attività push per utilizzare l'API Cloud Tasks.
Puoi creare e interagire con code in modalità push e attività di push utilizzando il API REST e RPC di Cloud Tasks, la piattaforma Cloud Tasks libreria client, Google Cloud CLI e Console Google Cloud. Questa pagina fornisce esempi che utilizzano l'interfaccia a riga di comando gcloud e la libreria client Cloud Tasks.
In Cloud Tasks, tutte le code funzionano come code push. Nella nella parte restante di questa guida e documentazione di Cloud Tasks, il termine coda è equivalente al termine coda push. Analogamente, il termine attività equivale a il termine attività push.
Funzionalità non disponibili in Cloud Tasks
Le seguenti funzionalità non sono disponibili in Cloud Tasks:
- Mettere in coda le attività nelle transazioni di Datastore
- Utilizzo della libreria delle attività differite anziché di un servizio di lavoro
- Lavorare con le attività nelle applicazioni multi-tenant
- Simulazione con il server di sviluppo locale
- Aggiunta di attività in modo asincrono
Prezzi e quote
La migrazione delle code push a Cloud Tasks potrebbe influire sui prezzi e sulle quote della tua app.
Prezzi
Cloud Tasks ha i propri prezzi. Come per le code di lavoro, l'invio di richieste all'app App Engine con un'attività può comportare costi per l'app.
Quote
Le quote di Cloud Tasks sono diverse da quelle per le code di attività. Come con Code di attività, invio di richieste all'app App Engine da Cloud Tasks potrebbe influire su App Engine quote per le richieste.
Prima della migrazione
Le sezioni seguenti illustrano i passaggi di configurazione prima di eseguire la migrazione delle code push a Cloud Tasks.
Migrazione delle code pull
Prima di iniziare,
eseguire la migrazione delle code in modalità pull
prima di seguire le istruzioni di questa guida
per la migrazione delle code in modalità push. La migrazione delle code pull dopo la migrazione delle code push non è consigliata perché l'utilizzo obbligatorio del file queue.yaml
potrebbe causare comportamenti imprevisti con Cloud Tasks.
Protezione della configurazione delle code
Una volta iniziato il processo di migrazione a Cloud Tasks,
la modifica del file queue.yaml
può causare comportamenti imprevisti e non
consigliato. Proteggi la configurazione della coda dalle modifiche apportate dal
queue.yaml
con i seguenti passaggi.
Configura gcloud CLI per omettere il file
queue.yaml
in futuro deployment di machine learning.Aggiungi il tuo file
queue.yaml
a un file.gcloudignore
. Per verificare se hai già un file.gcloudignore
, puoi eseguire questo comando in del terminale dalla directory di primo livello dell'app. Questo comando restituisce il nome file, se esistente.ls -a | grep .gcloudignore
Per scoprire di più sui file
.gcloudignore
, leggi le Riferimento.gcloudignore
.Limita le autorizzazioni per il tuo file
queue.yaml
.Segui le best practice descritte nella nostra guida sulla protezione della configurazione della coda.
Scopri di più su Cloud Tasks e sul file
queue.yaml
(facoltativo).Quando utilizzi l'API Cloud Tasks per gestire la configurazione della coda, il deployment di un file
queue.yaml
sostituisce la configurazione impostata da Cloud Tasks, il che può causare un comportamento imprevisto. Letto Utilizzo della gestione delle code e della gestione delle code.yaml per l'apprendimento altro ancora.
Abilitazione dell'API Cloud Tasks
Per abilitare l'API Cloud Tasks, fai clic su Abilita nella API Cloud Tasks nella libreria API. Se vedi un pulsante Gestisci anziché un pulsante Abilita, significa che hai già abilitato l'API Cloud Tasks per il tuo progetto e non devi ripetere l'operazione.
Autenticazione dell'app all'API Cloud Tasks
Devi autenticare la tua app nell'API Cloud Tasks. Questa sezione discute l'autenticazione per due diversi casi d'uso.
Per sviluppare o testare l'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 i dettagli di autenticazione per le app App Engine.
Download di gcloud CLI
Se non l'hai ancora fatto, scarica e installa gcloud CLI per utilizzarlo con l'API Cloud Tasks. Esegui questo comando dal tuo terminale se abbia già installato gcloud CLI.
gcloud components update
Importazione delle librerie client di Cloud
Per utilizzare la libreria client Cloud Tasks con la tua app App Engine:
Specifica la dipendenza della libreria client Cloud Tasks nel
pom.xml
file:<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-tasks</artifactId> <version>1.3.0</version> </dependency>
Importa le dipendenze della libreria client di Cloud Tasks nei file responsabili della creazione e dell'inserimento in coda delle attività:
import com.google.cloud.tasks.v2.AppEngineHttpRequest; import com.google.cloud.tasks.v2.CloudTasksClient; import com.google.cloud.tasks.v2.HttpMethod; import com.google.cloud.tasks.v2.QueueName; import com.google.cloud.tasks.v2.Task;
Creazione e gestione delle code
In questa sezione viene descritto come creare e gestire le code utilizzando API Cloud Tasks.
Con Cloud Tasks, non utilizzi un file queue.yaml
per creare o gestire le code. Utilizza invece l'API Cloud Tasks. L'utilizzo sia di un file queue.yaml
sia dell'API Cloud Tasks non è consigliato, ma potrebbe essere un passaggio inevitabile della migrazione da Task Queues a Cloud Tasks, a seconda dell'app. Leggi Utilizzare la gestione delle code rispetto a queue.yaml per scoprire le best practice.
Creazione di code
Leggi questa sezione se la tua app crea code in modo programmatico o se vuoi per creare code aggiuntive dalla riga di comando.
In Cloud Tasks, i nomi delle code hanno il formato
projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID
. La parte LOCATION_ID
del nome della coda corrisponde a una regione Google Cloud. La parte QUEUE_ID
del nome della coda è equivalente al campo name
della coda Coda attività. Viene generato il nome della coda
durante la creazione della coda in base al progetto, alla regione e ai QUEUE_ID
specificati.
In generale, la posizione della coda (ad es. regione) deve corrispondere alla regione di
la tua app. Le due eccezioni a questa regola riguardano le app che utilizzano l'europe-west
e le app che utilizzano la regione us-central
. In Cloud Tasks,
queste regioni sono rispettivamente denominate europe-west1
e us-central1
.
Puoi specificare la configurazione facoltativa della coda durante la creazione, ma puoi anche farlo aggiornando la coda dopo la sua creazione.
Non è necessario ricreare le code esistenti. Esegui invece la migrazione del codice interagisce con le code esistenti leggendo le parti pertinenti di questa guida.
Riutilizzo dei nomi delle code
Devi attendere 7 giorni dopo l'eliminazione di una coda per creare una coda con lo stesso ID coda nello stesso progetto e nella stessa località (ad es. regione).
L'esempio seguente crea due code utilizzando Cloud Tasks. La
prima coda ha l'ID coda queue-blue
ed è configurata per inviare tutte le attività alla
versione v2
del servizio task-module
a una frequenza di 5/s
. La seconda
coda ha l'ID coda queue-red
e invia le attività a una frequenza di 1/s
. Entrambi vengono creati nel progetto con ID progetto your-project-id
nella località us-central1
.
Si tratta dell'equivalente in Cloud Tasks della creazione di code in Code di attività.
gcloud
gcloud CLI deduce il progetto e la località la configurazione della gcloud CLI.
gcloud tasks queues create queue-blue \ --max-dispatches-per-second=5 \ --routing-override=service:task-module,version:v2
gcloud tasks queues create queue-red \ --max-dispatches-per-second=1
libreria client
Per saperne di più, leggi la documentazione di riferimento di Cloud Tasks Creazione di un'attività Cloud Tasks .
Impostazione della frequenza di elaborazione della coda
La tabella seguente elenca i campi che differiscono da Task Queues a Cloud Tasks.
Campo Code di attività | Campo Cloud Tasks | Descrizione |
---|---|---|
rate |
max_dispatches_per_second |
La frequenza massima con cui le attività vengono inviate dalla coda |
max_concurrent_requests |
max_concurrent_dispatches |
Il numero massimo di attività in parallelo che possono essere inviate dall'account coda |
bucket_size |
max_burst_size |
Cloud Tasks calcola una proprietà get-only
Per le code di App Engine create o aggiornate utilizzando un
|
total_storage_limit |
Ritirata in Cloud Tasks | Cloud Tasks non supporta l'impostazione di un limite di spazio di archiviazione personalizzato |
Puoi impostare la frequenza di elaborazione della coda quando crei o la aggiorni
in seguito. L'esempio seguente utilizza Cloud Tasks per impostare
velocità di elaborazione su una coda denominata queue-blue
già creata. Se
queue-blue
è stato creato o configurato utilizzando un file queue.yaml
, come segue
esempio reimpostamax_burst_size
in base al valore max_dispatches_per_second
di
20
. Questo è l'equivalente di Cloud Tasks
l'impostazione della coda di elaborazione
conv.
nelle code di attività.
gcloud
gcloud tasks queues update queue-blue \ --max-dispatches-per-second=20 \ --max-concurrent-dispatches=10
libreria client
Per scoprire di più, consulta Definire i limiti di frequenza.
Disattivare e riprendere le code
Cloud Tasks utilizza il termine metti in pausa nello stesso modo in cui Task Queues utilizza il termine disattiva. Se metti in pausa una coda, le attività in coda verranno interrotte dall'esecuzione fino alla ripresa della coda. Tuttavia, puoi continuare ad aggiungere attività a una coda in pausa. Cloud Tasks utilizza il termine riprendi nello stesso modo in cui lo fa Task Queues.
L'esempio seguente mette in pausa una coda con ID coda
queueName
. Si tratta dell'equivalente in Cloud Tasks della disattivazione delle code nelle code di attività.
gcloud
gcloud tasks queues pause queueName
libreria client
Per saperne di più, leggi la documentazione di riferimento di Cloud Tasks Messa in pausa code.
Eliminazione delle code in corso...
Dopo aver eliminato una coda, devi attendere 7 giorni prima di crearne una con lo stesso nome. Se non puoi attendere 7 giorni, ti consigliamo di eliminare definitivamente tutte le attività da una coda e di riconfigurarla.
Nell'esempio seguente viene eliminata la coda con ID coda
foo
. Questo è l'equivalente in Cloud Tasks dell'eliminazione delle code in Code di attività.
gcloud
gcloud tasks queues delete foo
libreria client
Per saperne di più, leggi la documentazione di riferimento di Cloud Tasks Eliminazione in corso code.
Creazione e gestione delle attività
Questa sezione descrive come creare e gestire le attività utilizzando l'API Cloud Tasks.
Creazione di attività
La tabella seguente elenca i campi che differiscono da Task Queues a Cloud Tasks.
Campo Code di attività | Campo Cloud Tasks | Descrizione |
---|---|---|
NOVITÀ in Cloud Tasks | app_engine_http_request |
Crea una richiesta che ha come target un servizio App Engine. Queste attività sono indicate come attività App Engine. |
method |
http_method |
Specifica il metodo di richiesta, ad esempio POST |
url |
relative_uri |
Specifica il gestore delle attività. Nota la differenza nella lettera finale:
i per Uniform Resource Identifier anziché
l per Uniform Resource Locator |
target |
app_engine_routing |
Facoltativo. Specifica service ,
version e instance di App Engine per un'attività
di App Engine. Se non impostato, vengono utilizzati il servizio, la versione e l'istanza predefiniti. |
L'esempio seguente crea un'attività che instrada al gestore /worker
nell'App Engine predefinito
completamente gestito di Google Cloud. Questo è l'equivalente in Cloud Tasks della creazione di attività nelle code di attività.
gcloud
gcloud tasks create-app-engine-task --queue=default \ --method=POST --relative-uri=/worker?key=key
libreria client
Per scoprire di più, leggi la documentazione di riferimento di Cloud Tasks su Creazione di attività App Engine.
Specificare il servizio e il routing di destinazione
La specifica del servizio, della versione e dell'istanza di destinazione App Engine per le attività App Engine è facoltativa. Per impostazione predefinita, le attività di App Engine vengono instradate al servizio, alla versione e all'istanza, che sono le l'ora in cui viene tentata l'attività.
Imposta la proprietà app_engine_routing
dell'attività durante la creazione per specificare un servizio, una versione o un'istanza App Engine diversa per l'attività.
Per instradare tutte le attività di una determinata coda allo stesso servizio, alla stessa versione e alla stessa istanza di App Engine, puoi impostare la proprietà app_engine_routing_override
sulla coda.
Per saperne di più, consulta la sezione di riferimento di Cloud Tasks Configurare il routing.
Trasferimento dei dati al gestore
Come con le code di attività, puoi passare i dati all'handler in due modi utilizzando Cloud Tasks. Puoi passare i dati come parametri di query nell'URI relativo oppure nel corpo della richiesta utilizzando i metodi HTTP POST o PUT.
Cloud Tasks utilizza il termine corpo nello stesso modo in cui Attività Code utilizza il termine payload. In Cloud Tasks, l'impostazione predefinita il tipo di contenuti del corpo è in streaming a ottetto anziché in testo normale. Puoi impostare il tipo di contenuti del corpo specificandolo nell'intestazione.
L'esempio seguente passa una chiave al gestore
/worker
in due modi diversi. Si tratta dell'equivalente in Cloud Tasks della trasmissione dei dati all'handler in Code di attività.
console
gcloud tasks create-app-engine-task --queue=default --method=GET \ --relative-uri= /worker ?key=blue --routing=service:worker
gcloud tasks create-app-engine-task --queue=default --method=POST \ --relative-uri= /worker --routing=service:worker \ --body-content="{'key': 'blue'}"
libreria client
Attività di denominazione
La specifica del nome dell'attività è facoltativa. Se non specifichi il nome dell'attività, Cloud Tasks lo genera per te generando un ID attività e deducendo il progetto e la posizione (ovvero la regione) in base alla coda specificata durante la creazione dell'attività.
I nomi delle attività hanno il formato
projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID
. La
TASK_ID
parte del nome dell'attività equivale al
Campo dell'attività name
delle code di attività.
Riutilizzare i nomi delle attività
Devi attendere prima di riutilizzare il nome di un'attività. La quantità di tempo che devi l'attesa prima di farlo varia a seconda che la coda di invio dell'attività sia in Cloud Tasks o nelle code di attività.
Per le attività in code create utilizzando Code di attività (compresa la coda predefinita), devi attendere circa 9 giorni dopo il l'attività originale è stata eliminata o eseguita. Per le attività in code create utilizzando Cloud Tasks, devi attendere circa un'ora dopo l'attività originale è stata eliminata o eseguita.
L'esempio seguente crea un'attività con TASK_ID
impostato su first-try
e la aggiunge alla coda predefinita. Si tratta dell'equivalente in Cloud Tasks della denominazione delle attività nelle code di attività.
gcloud
L'interfaccia a riga di comando gcloud crea il nome dell'attività deducendo il progetto e la posizione dalla configurazione.
gcloud tasks create-app-engine-task first-try --queue=default \ --method=GET --relative-uri= /worker
libreria client
Con la libreria client, devi specificare il nome completo dell'attività se vuoi
specificare TASK_ID
. Il progetto e la località devono corrispondere
il progetto e la posizione della coda a cui viene aggiunta l'attività.
Nuovo tentativo di esecuzione delle attività non riuscite
Puoi impostare la configurazione dei nuovi tentativi delle attività nelle code durante la creazione delle code oppure aggiornare la coda. La tabella seguente elenca il campo Code attività e il campo Cloud Tasks corrispondente.
Campo Code di attività | Campo Cloud Tasks |
---|---|
task_retry_limit |
max_attempts |
task_age_limit |
max_retry_duration |
min_backoff_seconds |
min_backoff |
max_backoff_seconds |
max_backoff |
max_doublings |
max_doublings |
Parametri di ripetizione specifici per l'attività
Parametri per i nuovi tentativi specifici dell'attività configurati in Le code di attività funzionano in Cloud Tasks, non possono modificarli né impostarli per nuove attività. Per modificare i parametri dei nuovi tentativi per un che ha parametri specifici per i nuovi tentativi, ricreala con Coda di Cloud Tasks con i parametri desiderati per i nuovi tentativi.
L'esempio seguente mostra vari scenari di ripetizione:
- In
fooqueue
, le attività vengono tentate di nuovo per un massimo di sette volte e per un massimo di due giorni dal primo tentativo di esecuzione. Dopo aver superato entrambi i limiti, non va a buon fine permanentemente. - In
barqueue
, App Engine tenta di riprovare le attività, aumentando di intervallo in modo lineare tra un nuovo tentativo e l'altro fino a raggiungere il backoff massimo riprovando all'infinito all'intervallo massimo (quindi gli intervalli tra le richieste sono 10, 20, 30, ..., 190, 200, 200, ...). - Nel mese di
bazqueue
, l'intervallo tra nuovi tentativi inizia 10 secondi e poi raddoppia per tre volte. poi aumenta in modo lineare e infine riprova a tempo indeterminato per l'intervallo massimo (in modo che gli intervalli tra le richieste Anni '10, '20, '40, '80, 160, 240, 300, 300, ...).
Questo è l'equivalente di Cloud Tasks nuovo tentativo in corso tasks nelle code di attività.
gcloud
Quando imposti opzioni che specificano un numero di secondi, devi includere s
dopo il numero intero (ad es. 200s
e non 200
).
gcloud tasks queues create fooqueue \ --max-attempts=7 \ --max-retry-duration=172800s #2*60*60*24 seconds in 2 days
gcloud tasks queues create barqueue \ --min-backoff=10s \ --max-backoff=200s \ --max-doublings=0
gcloud tasks queues create bazqueue \ --min-backoff=10s \ --max-backoff=300s \ --max-doublings=3
libreria client
Per saperne di più, consulta la documentazione di riferimento di Cloud Tasks su come impostare i parametri di ripetizione.
Eliminazione di attività da una coda
Quando elimini un'attività, devi attendere 9 giorni prima di crearne una con
lo stesso nome se l'attività si trovava in una coda creata utilizzando un file queue.yaml
, oppure 1
ora se l'attività si trovava in una coda creata con Cloud Tasks.
L'esempio seguente elimina l'attività con ID attività foo
dalla coda con
ID coda queue1
. Questo è l'equivalente di Cloud Tasks
eliminazione
tasks
nelle code di attività.
gcloud
Il progetto e la località dell'attività vengono dedotti dall'interfaccia predefinita di gcloud CLI progetto.
gcloud tasks delete foo --queue=queue1
libreria client
Per scoprire di più, leggi la documentazione di riferimento di Cloud Tasks su Elimina un'attività da una coda.
Pulizia delle attività
L'esempio seguente elimina definitivamente tutte le attività dalla coda
con ID coda
foo
. Questo è il
Equivalente di Cloud Tasks di
eliminazione
tasks
nelle code di attività.
gcloud
Il progetto e la posizione della coda vengono dedotti dal progetto predefinito dell'interfaccia a riga di comando gcloud.
gcloud tasks queues purge foo
libreria client
Per saperne di più, leggi la documentazione di riferimento di Cloud Tasks Espandere tutte le attività da una coda.
Esempio di Java 8 Cloud Tasks
L'esempio seguente è una configurazione di base per creare una coda e inserirvi un'attività con Cloud Tasks. Si presuppone che lo sviluppatore abbia
ha creato un file pom.xml
per specificare la dipendenza di Cloud Tasks
come descritto nella sezione Importazione del client
libreria di Google Cloud. Questo è l'equivalente di Cloud Tasks di un esempio di coda di attività Java 8 nelle code di attività.
Il file responsabile della creazione e dell'accodamento dell'attività crea un'attività e lo aggiunge alla coda predefinita utilizzando Cloud Tasks libreria client:
Il file che definisce il worker gestisce l'attività:
Passaggi successivi
- Documentazione di Cloud Tasks
- Libreria client Cloud Tasks
- Panoramica Riferimento REST di Cloud Tasks
- Panoramica della documentazione di riferimento RPC di Cloud Tasks