Utilizza Gestione delle code o queue.yaml

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:

  1. Chiama CreateQueue per creare una coda denominata "cloud-tasks-queue".
  2. 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:

  1. Quando un'attività viene aggiunta per la prima volta alla coda default utilizzando l'SDK App Engine.
  2. Quando viene caricato un file queue.yaml che specifica una coda default.
  3. Quando viene chiamato CreateQueue o UpdateQueue per creare la coda default.

Per preservare la compatibilità con App Engine, Cloud Tasks applica quanto segue restrizioni:

  1. Se una coda denominata "default" deve essere una coda che utilizza le attività di App Engine.
  2. Una volta creata, gli utenti non possono eliminare la coda default.

Nell'API Cloud Tasks, quanto segue si applica anche alla coda default:

  1. L'API Cloud Tasks non crea automaticamente la coda default o qualsiasi altra coda.
  2. Come per qualsiasi altra coda, l'istruzione GetQueue sulla coda default genera un errore di mancata corrispondenza se la chiamata viene effettuata prima della creazione della coda.
  3. Analogamente, la coda default non viene visualizzata nell'output di ListQueues prima della sua creazione.
  4. La configurazione della coda default può essere modificata con il Chiamata UpdateQueue.

Passaggi successivi