Dopo aver eseguito un flusso di lavoro, puoi accedere ai risultati dell'esecuzione del flusso di lavoro nella console Google Cloud o utilizzando lGoogle Cloud CLI.
Console
Nella console Google Cloud, vai alla pagina Workflows.
Per accedere ai risultati di esecuzione di un flusso di lavoro, fai clic sul nome del flusso di lavoro per accedere alla pagina Dettagli del flusso di lavoro.
Per i dettagli di una determinata esecuzione, nella scheda Esecuzioni, fai clic sull'ID esecuzione nell'elenco per accedere alla pagina Dettagli esecuzione.
Nella scheda Riepilogo, ogni esecuzione contiene le seguenti informazioni:
- ID esecuzione: l'identificatore univoco dell'esecuzione del workflow.
- Stato di esecuzione: indica lo stato finale del flusso di lavoro, incluso il passaggio corrente o finale del flusso di lavoro.
- Esecuzione creata: quando è stata avviata l'esecuzione.
- Inizio esecuzione: il momento in cui è iniziata l'esecuzione dei passaggi.
- Fine esecuzione: quando è terminata l'esecuzione.
- Durata dell'esecuzione: tempo totale trascorso. Ciò può indicare errori di rete o problemi di connettività.
- Nome del flusso di lavoro: il nome del flusso di lavoro.
- Revisione del flusso di lavoro: la revisione corrente al momento dell'esecuzione.
- Livello log di chiamate: il livello di registrazione delle chiamate applicato durante l'esecuzione. Per ulteriori informazioni, consulta la sezione Registrazione delle chiamate.
- Input: gli eventuali argomenti di runtime passati al flusso di lavoro.
- Output: l'output del flusso di lavoro. Se l'esecuzione non è riuscita, include l'eccezione che ha causato l'errore. In questo documento, consulta Mappe degli errori di esecuzione.
Per visualizzare la cronologia di esecuzione del flusso di lavoro come elenco di voci di passaggio, fai clic sulla scheda Passaggi. Per ulteriori informazioni, consulta Visualizzare la cronologia dei passaggi di esecuzione.
Per visualizzare i log di un'esecuzione del flusso di lavoro, fai clic sulla scheda Log.
Per filtrare i log di esecuzione, utilizza il campo Filtra nella parte superiore della tabella. Ad esempio, per visualizzare solo i tentativi di esecuzione non riusciti, inserisci
failed
nel campo di testo del filtro.
gcloud
Per visualizzare un elenco completo delle esecuzioni di un flusso di lavoro, inserisci il seguente comando:
gcloud workflows executions list WORKFLOW_NAME
Sostituisci
WORKFLOW_NAME
con il nome del flusso di lavoro. Copia l'ID esecuzione che ti interessa.Per visualizzare i log di esecuzione di un flusso di lavoro, inserisci il seguente comando:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
Sostituisci quanto segue:
WORKFLOW_NAME
: il nome del flusso di lavoroEXECUTION_ID
: l'ID univoco dell'esecuzione
Questo comando restituisce un output simile al seguente:
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
: gli eventuali argomenti di runtime passati al flusso di lavoroendTime
: quando è terminata l'esecuzioneerror
: il messaggio di errore generato nell'ambito dell'eccezione che ha causato il fallimento dell'esecuzionename
: il nome completo dell'esecuzione, incluso il nome del progetto, la posizione del workflow, il nome del workflow e l'ID esecuzionestartTime
: quando è iniziata l'esecuzionestate
: indica lo stato finale del flusso di lavorostatus
: il passaggio del flusso di lavoro corrente o finale dell'esecuzioneworkflowRevisionID
: la revisione corrente al momento dell'esecuzione
Mappe degli errori di esecuzione
Quando un flusso di lavoro genera un errore durante l'esecuzione che non viene rilevato in un
blocco try/except
, l'esecuzione non va a buon fine e viene restituita una mappa di errori (un dizionario JSON) che descrive l'errore.
Gli errori generati durante l'esecuzione del flusso di lavoro contengono tag che ti aiutano a identificare la causa dell'errore. Ad esempio, l'errore restituito da un connettore può avere due chiavi (tags
e message
) simili alle seguenti:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Possono essere presenti più tag. Per verificare la presenza di un tag specifico, puoi utilizzare un'espressione. Ad esempio:
${'SystemError' in e.tags}
Dati relativi agli errori di accesso restituiti come stringa
Alcuni connettori e API HTTP eseguono la serializzazione degli errori come stringhe prima di restituirli. Puoi utilizzare le funzioni della libreria standard per ripristinare un payload all'errore originale. Ad esempio, per convertire una stringa di errore in una mappa, puoi utilizzare le funzioni json.decode
e text.encode
:
json.decode(text.encode(ERROR_FROM_API))
Tag di errore
La tabella seguente descrive il significato dei diversi tag di errore.
Tag | Descrizione |
---|---|
AuthError | Viene sollevato quando la generazione delle credenziali per una richiesta HTTP non riesce. |
ConnectionError | Viene generato quando viene stabilita una connessione con l'endpoint, ma si verifica un problema con la connessione durante il trasferimento dei dati. La connessione viene interrotta prima che venga ricevuta una risposta completa e un messaggio potrebbe non essere stato recapitato all'endpoint. I tentativi di nuovo accesso potrebbero non essere idempotenti. |
ConnectionFailedError | Viene generato quando non viene stabilita una connessione con l'endpoint dell'API, ad esempio a causa di un nome di dominio errato, problemi di risoluzione DNS o altri problemi di rete. I tentativi di ripetizione sono idempotenti. |
HttpError | Viene sollevato quando una
richiesta HTTP non va a buon fine
con uno stato di errore HTTP. Quando viene sollevata questa eccezione, la risposta è una mappa con i seguenti elementi:
|
IndexError | Viene sollevato quando un indice di sequenza è un numero intero fuori intervallo. |
KeyError | Viene sollevato quando una chiave della mappa non viene trovata nell'insieme di chiavi esistenti. |
OperationError | Viene sollevato quando unoperazione a lunga esecuzione termina senza successo. |
ParallelNestingError | Viene sollevato quando viene superata la profondità massima in cui è possibile nidificare i passaggi in parallelo. |
RecursionError | Viene sollevato quando l'interprete rileva che la profondità massima dello stack delle chiamate è stata superata. |
ResourceLimitError | Viene generato quando viene esaurito un limite di risorse. Se viene generato internamente, questo tipo di errore non può essere rilevato e causa un immediato fallimento dell'esecuzione. |
ResponseTypeError | Viene sollevato quando un'operazione a lunga esecuzione restituisce una risposta di tipo sbagliato. |
SystemError | Viene sollevato quando l'interprete trova un errore interno. |
TimeoutError | Viene generato quando una funzione di sistema scade a livello di sistema. |
TypeError | Viene sollevato quando un'operazione o una funzione viene applicata a un oggetto di tipo incompatibile. Il valore associato è una stringa che fornisce dettagli sulla mancata corrispondenza del tipo. |
UnhandledBranchError | Viene generato quando uno o più rami o iterazioni rilevano un numero massimo di errori di runtime non gestiti. |
ValueError | Viene generata quando un'operazione o una funzione riceve un argomento con il
tipo corretto, ma un valore errato e la situazione non è descritta
da un'eccezione più precisa, ad esempio un IndexError . |
ZeroDivisionError | Viene sollevata quando il secondo argomento di un'operazione di divisione o modulo è pari a zero. Il valore associato è una stringa che indica il tipo di operandi e l'operazione. |
Puoi anche generare errori personalizzati
utilizzando la sintassi raise
.
Passaggi successivi
- Panoramica del debug
- Problemi noti di Workflows
- Inviare i log di esecuzione a Cloud Logging
- Risolvere i problemi