La sospensione dell'esecuzione di un flusso di lavoro consente di eseguire il polling di un servizio esterno o di attendere il completamento di un'operazione a lunga esecuzione. La sys.sleep
funzione della libreria standard
sospende l'esecuzione per un numero specificato di secondi, fino a un massimo di
31536000 (un anno).
Mettere in pausa un workflow
Puoi sospendere l'esecuzione di un workflow aggiungendo un passaggio di sospensione alla definizione del workflow. Questo passaggio include una chiamata a sys.sleep e specifica in
secondi per quanto tempo vuoi mettere in pausa il flusso di lavoro:
YAML
- STEP_NAME: call: sys.sleep args: seconds: SLEEP_IN_SECONDS
JSON
[ { "STEP_NAME": { "call": "sys.sleep", "args": { "seconds": "SLEEP_IN_SECONDS" } } } ]
Eseguire il polling dei dati
Puoi anche utilizzare sys.sleep per eseguire il polling dei dati in un determinato intervallo. Ad esempio,
potresti voler eseguire il polling di un'API finché non viene soddisfatta una condizione specifica:
YAML
main: params: [jobId] steps: - checkJob: call: http.get args: url: ${"https://example.com/jobs/" + jobId} auth: type: OAuth2 result: jobStatus - checkIfDone: switch: - condition: ${jobStatus.complete} return: ${jobStatus} - wait: call: sys.sleep args: seconds: 60 next: checkJob
JSON
{ "main": { "params": [ "jobId" ], "steps": [ { "checkJob": { "call": "http.get", "args": { "url": "${\"https://example.com/jobs/\" + jobId}", "auth": { "type": "OAuth2" } }, "result": "jobStatus" } }, { "checkIfDone": { "switch": [ { "condition": "${jobStatus.complete}", "return": "${jobStatus}" } ] } }, { "wait": { "call": "sys.sleep", "args": { "seconds": 60 }, "next": "checkJob" } } ] } }