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:
events.create_callback_endpoint: crea un endpoint de retrollamada que espera el método HTTP especificado.events.await_callback: espera a que se reciba una retrollamada en el endpoint indicado.
Crear un endpoint que reciba una solicitud de retrollamada
Crea un endpoint de retrollamada que pueda recibir solicitudes HTTP para llegar a ese endpoint.
- Sigue los pasos para crear un flujo de trabajo o elige uno que ya tengas para actualizarlo (pero no lo implementes todavía).
- 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
METHODpor el método HTTP esperado, que puede serGET,HEAD,POST,PUT,DELETE,OPTIONSoPATCH. El valor predeterminado esPOST.El resultado es un mapa,
callback_details, con un campourlque 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.
- 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
TIMEOUTpor 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 errorTimeoutError.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