Questa pagina spiega le differenze tra l'utilizzo dell'API Cloud Tasks per gestire le code e l'utilizzo del caricamento di un file queue.yaml
Cloud Tasks per raggiungere gli stessi scopi. Vengono inoltre descritti alcuni dei pericoli della combinazione di meccanismi e come gestire i problemi più comuni.
Introduzione
L'API Cloud Tasks fornisce un'interfaccia indipendente da App Engine per il servizio Task Queue di App Engine. Nell'interfaccia, offre la possibilità di gestire code,
attraverso la console o con il comando gcloud
. Code
create dall'API Cloud Tasks sono accessibili dall'SDK di App Engine e
e viceversa. Per mantenere la compatibilità, è possibile utilizzare la configurazione
utilizzato dall'SDK di App Engine, queue.yaml
, anche per creare e configurare
codec da utilizzare tramite l'API Cloud Tasks. Tuttavia, se si combinano configurazioni
tramite un file di configurazione mediante l'API Cloud Tasks può produrre conseguenze impreviste.
Insidie dell'utilizzo combinato di queue.yaml
con i metodi di gestione delle code di Cloud Tasks
Per il servizio sottostante,i file queue.yaml
sono definitivi. Se carichi un elemento queue.yaml
che omette le code esistenti nel progetto, indipendentemente da come siano state create, le code vengono disattivate o messe in pausa. Di conseguenza, se utilizzi l'API Cloud Tasks per chiamare CreateQueue
o UpdateQueue
e poi carichi un file queue.yaml
che lo omette, le code create nelle chiamate Cloud Tasks vengono disabilitate.
Considera il seguente scenario:
- Chiama
CreateQueue
per creare una coda denominata "cloud-tasks-queue". Carica un file
queue.yaml
con i seguenti contenuti:queue: - name: queue-yaml-queue
Qual è lo stato attuale delle code in questo progetto? La coda denominata
"coda-attività-cloud" e tutte le altre code esistenti in precedenza si trovano
DISABLED
e la coda denominata "queue-yaml-queue" è in RUNNING
stato.
Questo comportamento potrebbe sorprenderti se crei tramite l'API Cloud Tasks. Le istruzioni riportate di seguito spiegano come riprendere una coda disattivata.
Analogamente, se una coda è disabilitata nell'API Cloud Tasks, ma in un secondo momento viene visualizzata in un file queue.yaml
caricato, la coda viene ripresa.
Se una coda viene eliminata con il metodo DeleteQueue
e in un secondo momento viene visualizzata in un file queue.yaml
, il caricamento del file queue.yaml
può non andare a buon fine perché i nomi coda non possono essere riutilizzati per diversi giorni dopo l'eliminazione.
Best practice
Se non hai mai utilizzato Cloud Tasks o App Engine, utilizza l'API Cloud Tasks
esclusivamente per gestire le code ed evitare l'uso di queue.yaml
del tutto. I metodi di gestione delle code di Cloud Tasks offrono agli utenti una maggiore scelta per la creazione, l'aggiornamento e l'eliminazione delle code.
Tuttavia, se sei già un utente di queue.yaml
, ti consigliamo di passare ai metodi di gestione delle code solo se conosci i pericoli della combinazione di queue.yaml
con i metodi di gestione delle code di Cloud Tasks.
Per impedire agli utenti di combinare più metodi di gestione delle attività, un'opzione è
creare un'app web o uno strumento a riga di comando che tutti gli utenti devono utilizzare per creare, aggiornare
ed eliminare le code. Indica se lo strumento utilizza la coda di Cloud Tasks
di gestione dei dati, o queue.yaml
, è un dettaglio di implementazione dello strumento
di cui gli utenti non debbano preoccuparsi. Se gli utenti devono utilizzare lo strumento,
puoi garantire che non ci sia una combinazione involontaria di
Metodi di gestione delle code di Cloud Tasks e utilizzo di queue.yaml
.
Per applicare in modo forzato l'uso di uno strumento di questo tipo, puoi concedere allo strumento i ruoli di amministratore delle code
e richiedono agli utenti di autenticarsi per utilizzare lo strumento. Per scoprire di più sull'accesso
per la gestione dei contenuti, consulta
Configurazione sicura delle code.
Debug
Puoi esaminare lo stato del progetto Audit log delle attività di amministrazione da recuperare la cronologia delle modifiche alla configurazione della coda, inclusa la coda creazioni, aggiornamenti ed eliminazioni:
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Ad esempio, se una coda esistente viene disattivata da un caricamento queue.yaml
, viene
"Coda disattivata '[QUEUE_NAME]'" viene visualizzato nell'audit log
il metodo com.google.appengine.legacy.queue_updated
.
Come riprendere una coda disattivata da un caricamento queue.yaml
Se
combini queue.yaml
con i metodi di gestione delle code di Cloud Tasks,
caricare un file queue.yaml
potrebbe disattivare accidentalmente una coda creata tramite l'API Cloud Tasks.
Per riprendere la coda, puoi chiamare ResumeQueue
nella coda o aggiungerla
a queue.yaml
e caricarla. Tieni presente che se in precedenza hai impostato un'elaborazione personalizzata
rate
nella configurazione queue.yaml
per la coda,
ResumeQueue
reimposta la coda su rate
predefinito. Questo viene riportato nel
maxDispatchesPerSecond
campo della risposta a ResumeQueue
.
Quote
Se utilizzi queue.yaml
per creare le code, per impostazione predefinita puoi crearne al massimo 100. Code create
utilizzando l'API Cloud Tasks,hanno un massimo predefinito di 1000 code. Come in
in altri casi, la combinazione di metodi queue.yaml
e API Cloud Tasks può produrre risposte
che consentono di analizzare i dati
e visualizzare i risultati. Ad esempio, supponi di creare alcune code utilizzando queue.yaml
e poi di ricevere un
aumento della quota, ad esempio 2000. Se in seguito utilizzi l'API Cloud Tasks
per creare altre code, esaurirai gli errori di quota. Per risolvere il problema,
invia una richiesta utilizzando Modifica quote dalla pagina Quote della
console Google Cloud.
Ulteriori informazioni sui metodi di gestione delle code di Cloud Tasks
Configurazione della coda e ritardo di avvio della coda
L'applicazione delle modifiche alla configurazione della coda può richiedere diversi minuti. Ad esempio, dopo aver chiamato CreateQueue
o UpdateQueue
, potrebbero trascorrere diversi minuti prima che tu possa chiamare CreateTask
in quella coda.
Cloud Tasks e la coda default
App Engine
Alla coda App Engine denominata "predefinita" viene riservato un trattamento speciale nell'SDK App Engine e nell'API Cloud Tasks.
Se la coda default
non esiste già, viene creata nel seguente modo:
situazioni seguenti:
- Quando un'attività viene aggiunta per la prima volta alla coda
default
utilizzando l'SDK App Engine. - Quando viene caricato un file
queue.yaml
che specifica una codadefault
. - Quando viene chiamato
CreateQueue
oUpdateQueue
per creare la codadefault
.
Per preservare la compatibilità con App Engine, Cloud Tasks applica quanto segue restrizioni:
- Se una coda denominata "default" deve essere una coda che utilizza le attività di App Engine.
- Una volta creata, gli utenti non possono eliminare la coda
default
.
Nell'API Cloud Tasks, quanto segue si applica anche alla coda default
:
- L'API Cloud Tasks non crea automaticamente la coda
default
o qualsiasi altra coda. - Come per qualsiasi altra coda, l'istruzione
GetQueue
sulla codadefault
genera un errore di mancata corrispondenza se la chiamata viene effettuata prima della creazione della coda. - Analogamente, la coda
default
non viene visualizzata nell'output diListQueues
prima della sua creazione. - La configurazione della coda
default
può essere modificata con il ChiamataUpdateQueue
.
Passaggi successivi
- Vedi i metodi disponibili nell'API RPC Cloud Tasks nei documenti di riferimento.
- Consulta i metodi disponibili nell'API REST Cloud Tasks nei documenti di riferimento.
- Scopri di più su
queue.yaml
.