Espera con sondeo

Pausar la ejecución de un flujo de trabajo te permite sondear un servicio externo o esperar a que se complete una operación de larga duración. La sys.sleep función de biblioteca estándar suspende la ejecución durante una cantidad específica de segundos, hasta un máximo de 31536000 (un año).

Cómo pausar un flujo de trabajo

Puedes pausar la ejecución de un flujo de trabajo agregando un paso de suspensión a la definición del flujo de trabajo. Este paso incluye una llamada a sys.sleep y especifica en segundos cuánto tiempo quieres pausar el flujo de trabajo:

YAML

  - STEP_NAME:
      call: sys.sleep
      args:
          seconds: SLEEP_IN_SECONDS
    

JSON

    [
      {
        "STEP_NAME": {
          "call": "sys.sleep",
          "args": {
            "seconds": "SLEEP_IN_SECONDS"
          }
        }
      }
    ]
    

Sondeo de datos

También puedes usar sys.sleep para sondear datos durante un intervalo determinado. Por ejemplo, es posible que desees sondear una API hasta que se cumpla una condición específica:

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"
          }
        }
      ]
    }
  }