Sebbene sia possibile utilizzare un queue.yaml
file per gestire le code, la combinazione di metodi di gestione delle code
può causare risultati imprevisti. Questa guida spiega i rischi della combinazione di questi metodi e mostra come risolvere i problemi di configurazione comuni.
L'API Cloud Tasks fornisce un'interfaccia indipendente al servizio App Engine Task Queue. Utilizzando questa interfaccia, puoi gestire le code tramite la Google Cloud console o la Google Cloud CLI. Le code create con l'API Cloud Tasks sono accessibili da App Engine SDK, una raccolta di API specifiche della piattaforma, strumenti autonomi e file di runtime, mentre le code create con App Engine SDK sono accessibili dall' API Cloud Tasks.
Per mantenere la compatibilità, puoi utilizzare queue.yaml, il file di configurazione per App Engine SDK, per creare e configurare le code per l'API Cloud Tasks. Tuttavia, la gestione delle code utilizzando questo file e l'API Cloud Tasks può causare problemi descritti in questa guida.
Prima di iniziare
Se non hai familiarità con Cloud Tasks o App Engine, utilizza esclusivamente l'API Cloud Tasks per gestire le code ed evita di utilizzare queue.yaml. I metodi di gestione delle code di Cloud Tasks offrono più opzioni per creare, aggiornare ed eliminare le code.
Se utilizzi già queue.yaml valuta la possibilità di passare a
metodi di gestione delle code di Cloud Tasks solo se comprendi i
rischi della combinazione di metodi di gestione delle code.
Applicare un metodo di gestione delle code
Per evitare di combinare i metodi di gestione delle code, puoi creare un'app web o uno strumento a riga di comando per creare, aggiornare ed eliminare le code. Se lo strumento utilizza i metodi di gestione delle code di Cloud Tasks o queue.yaml è un dettaglio di implementazione di cui gli utenti non devono essere a conoscenza. Applicando l'utilizzo dello strumento, puoi assicurarti che non vi sia una combinazione involontaria di metodi.
Concedi il ruolo di amministratore delle code di Cloud Tasks Identity and Access Management (IAM) allo strumento e richiedi agli utenti di autenticarsi. Per saperne di più sulla
gestione degli accessi, consulta
Proteggere la configurazione delle code.
Ritardi nella configurazione delle code
Le modifiche alla configurazione delle code possono richiedere diversi minuti per essere applicate. Ad esempio, dopo aver chiamato CreateQueue o UpdateQueue, potrebbero passare diversi minuti prima di poter chiamare correttamente CreateTask nella coda.
Coda default di App Engine
La coda di App Engine denominata default riceve un trattamento speciale in App Engine SDK e nell'API Cloud Tasks.
Quando viene creata la coda default? | |
|---|---|
Se la coda |
|
| Quali limitazioni applica Cloud Tasks? | |
Per preservare la compatibilità con App Engine,
Cloud Tasks applica le seguenti limitazioni relative alla
|
|
Rischi della combinazione di metodi di gestione delle code
Per il servizio sottostante, i file queue.yaml sono definitivi. Il caricamento di un file
queue.yaml che omette le code esistenti nel progetto, indipendentemente da come
sono state create, disattiva o
mette in pausa
queste code. Ad esempio, se utilizzi l'API Cloud Tasks per chiamare CreateQueue o UpdateQueue e poi carichi un file queue.yaml che omette queste code, le code vengono disattivate. Dovrai quindi
riprendere le code disattivate.
La combinazione di metodi di gestione delle code può comportare un comportamento imprevisto. Considera ad esempio i seguenti scenari:
Scenario 1
Chiami CreateQueue per creare una coda denominata cloud-tasks-queue e poi carichi un file queue.yaml con i seguenti contenuti:
queue:
- name: queue-yaml-queue
Di conseguenza, gli stati delle code sono i seguenti:
- La coda denominata
cloud-tasks-queuee tutte le altre code preesistenti sono in statoDISABLED. - La coda denominata
queue-yaml-queueè in statoRUNNING.
Scenario 2
Utilizzi l'API Cloud Tasks per disattivare una coda, ma in seguito questa viene visualizzata in un file queue.yaml caricato. La coda viene ripresa.
Scenario 3
Elimini una coda con il metodo DeleteQueue e in seguito questa viene visualizzata in un file queue.yaml. Il caricamento di queue.yaml potrebbe non riuscire perché
i nomi delle code non possono essere riutilizzati per diversi giorni
dopo l'eliminazione.
Eseguire il debug utilizzando gli audit log
Puoi esaminare gli audit log delle attività di amministrazione del progetto e recuperare una cronologia delle modifiche alla configurazione delle code, incluse le creazioni, gli aggiornamenti e le eliminazioni delle code.
Ad esempio, se un caricamento queue.yaml disattiva una coda esistente, puoi eseguire
il seguente comando per restituire un messaggio di log
Disabled queue QUEUE_NAME tramite il metodo
com.google.appengine.legacy.queue_updated:
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)'
Per saperne di più, consulta Leggere le voci di log.
Riprendere una coda disattivata dal caricamento di un file queue.yaml
Se combini i metodi di gestione delle code, il caricamento di 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.
Se in precedenza hai impostato un'elaborazione personalizzata
rate nella configurazione queue.yaml, ResumeQueue reimposta la coda sul valore predefinito rate. Questo si
riflette nel
maxDispatchesPerSecond
campo della risposta a ResumeQueue.
Risolvere i problemi relativi alle quote
Se utilizzi queue.yaml per creare le code, il progetto ha una quota predefinita
per il
numero massimo di code che puoi
creare. Anche le code create utilizzando l'API Cloud Tasks hanno una
quota predefinita. Come in altri casi, la combinazione di metodi queue.yaml e API Cloud Tasks può produrre risultati imprevisti.
Ad esempio, quando crei le code utilizzando queue.yaml e poi ricevi un aumento della quota, se in seguito utilizzi l'API Cloud Tasks per creare altre code, potresti ricevere errori di superamento della quota. Per risolvere il problema, puoi gestire le quote utilizzando la Google Cloud console. Per saperne di più, consulta
Gestire le quote utilizzando la console.