Skip to navigation

Come gira un'esecuzione

Coda, tempi massimi, cosa succede quando qualcosa si blocca
View as Markdown

Un workflow che funziona in prova e si comporta in modo strano in servizio quasi sempre incontra uno dei limiti di questa pagina. Sono pochi, sono fissi, e sapendoli si progetta il flusso in modo che non li tocchi.

Una alla volta

Di uno stesso workflow gira una sola esecuzione completa per volta. Se ne parte un’altra mentre la prima è in corso, viene messa in coda e parte appena la precedente finisce.

Nella pagina Le esecuzioni un’esecuzione in attesa del suo turno risulta In coda. Nella cronologia del builder invece risulta Esecuzione in corso, come quella che sta girando: se ne vedi due e i passaggi si muovono solo in una, l’altra sta aspettando.

Le prove sul singolo blocco seguono una regola separata: Esegui solo questo nodo non si mette in coda dietro un’esecuzione completa, ma non ne parte una seconda finché la prima non ha finito.

Il pulsante Esegui solo questo nodo sull'intestazione di un blocco, evidenziato: la prova del singolo blocco non si mette in coda dietro un'esecuzione completa

Un’esecuzione ferma su un’attesa (un modulo da compilare, un pulsante da premere, un operatore, una Pausa) libera il posto, quindi non trattiene le altre. Non scade da sola: resta lì finché qualcuno non risponde o la pausa non finisce.

I tempi massimi

Sono fissi e non si configurano.

CosaTempo massimoCosa succede oltre
Una chiamata HTTP request30 secondiIl blocco fallisce
Un invio con Invia email30 secondiIl blocco fallisce
Una Ricerca web45 secondiIl blocco esce da Errore
Una Ricerca knowledge o un’azione di un’integrazione90 secondiIl blocco esce da Errore, o segue In caso di errore
Un blocco AI Core, strumenti compresi180 secondiIl blocco segue In caso di errore
Un’esecuzione completa che resta in corso15 minutiViene chiusa come fallita
Una prova su un singolo blocco2 minutiViene chiusa come fallita

I 15 minuti si contano da quando l’esecuzione è stata creata, quindi comprendono il tempo passato in coda e le attese. Il controllo non è continuo: un’esecuzione bloccata viene chiusa la volta dopo che qualcuno avvia quel workflow, prova un suo blocco o ne apre l’elenco delle esecuzioni.

La risposta di una chiamata HTTP viene troncata a 256 KB. Se stai leggendo un elenco lungo, chiedi al sistema di paginare invece di scaricare tutto: oltre quel limite il corpo arriva tagliato, e un riferimento a un campo in fondo non trova niente.

Niente ritentativi, niente annullamento

Un passaggio che fallisce non viene ritentato. Il suo ramo si ferma e i blocchi a valle non girano. L’esecuzione risulta fallita solo se nessun ramo arriva in fondo: se un altro ramo finisce bene, risulta completata anche se una parte si è fermata.

Dove la chiamata può fallire per motivi temporanei, la strada è la Gestione errori del blocco: Aggiungi callback di errore non ritenta, ma devia su un percorso di recupero che costruisci tu. → I blocchi disponibili

La Gestione errori di un blocco HTTP con il menu In caso di errore aperto: Interrompi workflow, Continua con output di errore e Aggiungi callback di errore

Non c’è nemmeno un modo di fermare un’esecuzione avviata. Disattiva impedisce gli avvii successivi, ma quelle in corso o in coda arrivano dove devono arrivare. Fanno eccezione i limiti di spesa del workflow, che possono interrompere un’esecuzione a metà. → Costi e limiti

È la ragione per cui i destinatari veri si mettono per ultimi, e solo quando il resto funziona.

Chiamare un altro workflow

Chiama workflow avvia un secondo flusso e ne aspetta l’esito. Il workflow chiamato deve essere attivo e pubblicato, e gira la sua versione pubblicata.

  • Profondità massima 5. Un workflow che ne chiama un altro, che ne chiama un altro, e così via: oltre il quinto livello la chiamata viene rifiutata.
  • Niente cicli. Se il workflow che stai per chiamare è già più su nella catena, la chiamata viene rifiutata. Un workflow può richiamare se stesso una volta sola: A che chiama A va bene, A che chiama A che chiama A no.

Se la chiamata fallisce, il flusso chiamante prosegue con l’errore registrato nel passaggio. Ogni workflow chiamato conta come esecuzione propria verso la quota mensile. → Costi e limiti

Quale definizione gira

Dipende da dove parte l’esecuzione, ed è la differenza che confonde di più.

Da dove parteCosa esegue
Dal builder, con una prova del flusso o Esegui solo questo nodoLa bozza che hai sulla tela in quel momento
Dall’indirizzo Test del webhookLa bozza salvata
Dalla chat, da un agente, da un’attività schedulata, dall’indirizzo Produzione del webhook, da un evento di un’app, da Chiama workflowLa versione pubblicata

È il motivo per cui una correzione può funzionare nel builder e non cambiare niente per i colleghi. Finché non pubblichi, tutti gli altri avvii usano la versione vecchia. → Pubblicare e monitorare

Progettare tenendone conto

  • Spezza le chiamate lente. Se un sistema esterno impiega più di 30 secondi, chiedi l’avvio del lavoro con una chiamata, aspetta con Pausa e chiedi il risultato con una seconda chiamata.
  • Non contare su un ritentativo. Dove la chiamata può fallire, metti Aggiungi callback di errore e decidi tu cosa fare.
  • Tieni le esecuzioni corte. Il tetto dei 15 minuti vale per il flusso intero, attese comprese. Se ti serve aspettare più a lungo, spezza il lavoro in due workflow e collegali con Chiama workflow.
  • Evita di far partire lo stesso workflow in raffica. Con una sola esecuzione per volta, la coda cresce e il ritardo si accumula.