Esperar mediante retrollamadas

Las retrollamadas permiten que las ejecuciones de flujos de trabajo esperen a que otro servicio envíe una solicitud al endpoint de retrollamada. Esta solicitud reanuda la ejecución del flujo de trabajo.

Con las retrollamadas, puedes indicar a tu flujo de trabajo que se ha producido un evento específico y esperar a que se produzca ese evento sin sondeo. Por ejemplo, puedes crear un flujo de trabajo que te avise cuando un producto vuelva a estar disponible o cuando se haya enviado un artículo, o que espere para permitir la interacción humana, como revisar un pedido o validar una traducción.

En esta página se explica cómo crear un flujo de trabajo que admita un endpoint de retrollamada y que espere a que lleguen solicitudes HTTP de procesos externos a ese endpoint. También puedes esperar eventos mediante devoluciones de llamada y activadores de Eventarc.

Las retrollamadas requieren el uso de dos funciones integradas de la biblioteca estándar:

Crear un endpoint que reciba una solicitud de retrollamada

Crea un endpoint de retrollamada que pueda recibir solicitudes HTTP para llegar a ese endpoint.

  1. Sigue los pasos para crear un flujo de trabajo o elige uno que ya tengas para actualizarlo (pero no lo implementes todavía).
  2. En la definición del flujo de trabajo, añade un paso para crear un endpoint de retrollamada:

    YAML

        - create_callback:
            call: events.create_callback_endpoint
            args:
                http_callback_method: "METHOD"
            result: callback_details
        

    JSON

        [
          {
            "create_callback": {
              "call": "events.create_callback_endpoint",
              "args": {
                "http_callback_method": "METHOD"
              },
              "result": "callback_details"
            }
          }
        ]
          

    Sustituye METHOD por el método HTTP esperado, que puede ser GET, HEAD, POST, PUT, DELETE, OPTIONS o PATCH. El valor predeterminado es POST.

    El resultado es un mapa, callback_details, con un campo url que almacena la URL del endpoint creado.

    El endpoint de retrollamada ya está listo para recibir solicitudes entrantes con el método HTTP especificado. La URL del endpoint creado se puede usar para activar la retrollamada desde un proceso externo al flujo de trabajo. Por ejemplo, se puede transferir la URL a una función de Cloud Run.

  3. En la definición del flujo de trabajo, añade un paso para esperar una solicitud de retrollamada:

    YAML

        - await_callback:
            call: events.await_callback
            args:
                callback: ${callback_details}
                timeout: TIMEOUT
            result: callback_request
        

    JSON

        [
          {
            "await_callback": {
              "call": "events.await_callback",
              "args": {
                "callback": "${callback_details}",
                "timeout": TIMEOUT
              },
              "result": "callback_request"
            }
          }
        ]
          

    Sustituye TIMEOUT por el número máximo de segundos que debe esperar el flujo de trabajo para recibir una solicitud. El valor predeterminado es 43200 (12 horas). Si transcurre el tiempo antes de que se reciba una solicitud, se genera un error TimeoutError.

    Ten en cuenta que hay una duración máxima de ejecución. Para obtener más información, consulta el límite de solicitudes.

    El mapa