Attendere utilizzando il polling

La funzione di libreria standard sys.sleep sospende l'esecuzione per il numero di secondi specificato a un massimo di 31536000 (uno anno).

Metti in pausa un flusso di lavoro

Puoi mettere in pausa l'esecuzione di un flusso di lavoro aggiungendo un passaggio di sospensione alla definizione del flusso di lavoro. Questo passaggio include una chiamata a sys.sleep e specifica in secondi il tempo per cui 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"
          }
        }
      }
    ]
    

Effettuare un sondaggio per i dati

Puoi anche utilizzare sys.sleep per eseguire il polling dei dati in un determinato intervallo di tempo. 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"
          }
        }
      ]
    }
  }