Questa pagina mostra come creare un gestore delle attività di App Engine, ovvero il
codice worker che gestisce un'attività di App Engine. La coda di Cloud Tasks invia richieste HTTP al gestore delle attività. Al termine dell'elaborazione, il gestore deve inviare alla coda un codice di stato HTTP compreso tra 200 e 299. Qualsiasi altro valore indica che l'attività non è riuscita e la coda ritenta l'attività.
Le richieste della coda delle attività di App Engine vengono inviate dall'indirizzo IP 0.1.0.2.
Fai riferimento anche all'
intervallo IP per le richieste inviate all'ambiente App Engine.
C#
Go
Java
Node.js
PHP
Python
Ruby
Timeout
Le attività di App Engine hanno timeout specifici che dipendono dal tipo di scalabilità del servizio che le esegue.
Per i servizi worker in esecuzione nell'ambiente standard:
- Scalabilità automatica: l'elaborazione delle attività deve terminare entro 10 minuti.
- Scalabilità manuale e di base: le richieste possono essere eseguite fino a 24 ore.
Per i servizi worker in esecuzione nell'ambiente flessibile: tutti i tipi hanno un timeout di 60 minuti.
Se il gestore non rispetta la scadenza, la coda presuppone che l'attività non sia riuscita e la ritenta.
Lettura delle intestazioni delle richieste delle attività di App Engine
Le richieste inviate al gestore di App Engine da una coda di Cloud Tasks hanno intestazioni speciali, che contengono informazioni specifiche dell'attività che il gestore potrebbe voler utilizzare.
Queste intestazioni vengono impostate internamente. Se una di queste intestazioni è presente in una richiesta utente esterna alla tua app, viene sostituita da quelle interne, ad eccezione delle richieste degli amministratori connessi dell'applicazione, che sono autorizzati a impostare le intestazioni a scopo di test.
Le richieste delle attività di App Engine contengono sempre le seguenti intestazioni:
| Intestazione | Descrizione |
|---|---|
X-AppEngine-QueueName |
Il nome della coda. |
X-AppEngine-TaskName |
Il nome "breve" dell'attività o, se non è stato specificato alcun nome al momento della creazione, un ID univoco generato dal sistema. Questo è il valore my-task-id nel nome completo dell'attività; ad esempio, task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id. |
X-AppEngine-TaskRetryCount |
Il numero di volte in cui è stato ritentato l'esecuzione dell'attività. Per il primo tentativo, questo valore è 0. Questo numero include i tentativi in cui l'attività non è riuscita a causa della mancanza di istanze disponibili e non ha mai raggiunto la fase di esecuzione. |
X-AppEngine-TaskExecutionCount |
Il numero di volte in cui l'attività è stata eseguita e ha ricevuto una risposta dal gestore. Poiché Cloud Tasks elimina l'attività una volta ricevuta una risposta riuscita, tutte le risposte precedenti del gestore sono errori. Questo numero non include gli errori dovuti alla mancanza di istanze disponibili. Tieni presente che X-AppEngine-TaskExecutionCount può essere uguale a X-AppEngine-TaskRetryCount se viene aggiornato prima di tentare un'esecuzione. |
X-AppEngine-TaskETA |
Inizialmente, l'ora di pianificazione originale dell'attività, specificata in secondi dal 1° gennaio 1970. Tieni presente che rappresenta l'ora di invio prevista. In caso di nuovi tentativi, viene aggiornato in prossimità dell'ora corrente e può essere utilizzato per misurare la latenza di consegna. _Non_ deve essere utilizzato per la deduplicazione delle attività. |
Se il gestore delle richieste trova una delle intestazioni elencate in precedenza, può presupporre che la richiesta sia una richiesta di Cloud Tasks.
Inoltre, le richieste di Cloud Tasks potrebbero contenere le seguenti intestazioni:
| Intestazione | Descrizione |
|---|---|
X-AppEngine-TaskPreviousResponse |
Il codice di risposta HTTP del tentativo precedente. |
X-AppEngine-TaskRetryReason |
Il motivo per cui è stato ritentato l'esecuzione dell'attività. |
X-AppEngine-FailFast |
Indica che un'attività non riesce immediatamente se non è disponibile un'istanza esistente. |
Routing di destinazione
Nelle attività di App Engine, sia la coda sia il gestore delle attività vengono eseguiti all'interno di uno stesso Google Cloud progetto. Il traffico viene criptato durante il trasporto e non lascia mai i data center di Google. Non puoi impostare esplicitamente il protocollo (ad esempio HTTP o HTTPS). Tuttavia, la richiesta al gestore sembrerà aver utilizzato il protocollo HTTP.
Le attività possono essere inviate a gestori delle attività sicuri, a gestori delle attività non sicuri e, nei
runtime supportati, agli URI con restrizioni
login: admin.
Poiché le attività non vengono eseguite come utente, non possono essere inviate agli URI
con restrizioni login: required.
Inoltre, gli invii delle attività non seguono i reindirizzamenti.
Passaggi successivi
- Scopri di più sulle attività nel riferimento API RPC.
- Scopri di più sulle attività nel riferimento API REST.