Con la ejecución asincrónica el gateway no retiene la llamada mientras el motor procesa la vista o el pipeline: responde enseguida 202 Accepted con un identificador de tarea, y el cliente vuelve a pedir el resultado con ese identificador cuando esté listo. Es la forma de exponer consultas largas sin que el consumidor espere con la conexión abierta. En esta guía activa la ejecución asincrónica en un método, ajusta la respuesta del 202 y hace las dos llamadas.
En el editor del método, el bloque Ejecución Asincrónica tiene las opciones Activado y Desactivado. En un método sobre un pipeline viene activada; sobre una vista, desactivada. Elija Activado, guarde el método con Listo y publique la versión.
La llamada al método es la de siempre. Mientras el motor trabaja, el gateway responde 202 Accepted con el identificador de la tarea en uuid:
{"message": "Response is not ready call later with uuid >> 30a412f3-53c6-4a0e-8c83-97382a16dc19", "code": 409, "uuid": "30a412f3-53c6-4a0e-8c83-97382a16dc19"}
Para obtener el resultado, repita la misma URL con la cabecera X-UUID y el identificador. No hay una ruta aparte de consulta:
curl -H "X-UUID: 30a412f3-53c6-4a0e-8c83-97382a16dc19" "https://api.midominio.com/demo-ventas/v1/ventas.json?auth_key=TU_LLAVE"
Si el resultado está listo, la respuesta es la del método, con su formato y su plantilla. Si todavía no, vuelve el 202 con el mismo identificador, y el cliente reintenta más tarde. Las consultas con X-UUID no consumen los límites de solicitudes del método. El resultado queda disponible durante 24 horas; pasado ese plazo, o con un identificador que no existe, el gateway responde que el proceso venció.
El cuerpo del 202 se arma con la plantilla de error 409 - PIPELINE RESPONSE del método, que en los métodos sobre pipelines aparece como Plantilla de ejecución de la tarea asíncrona. Tiene disponibles result.uuid, result.error_code y result.error_message. Si no asigna ninguna, se usa la plantilla genérica del método o de la cuenta, que es la del ejemplo anterior. El código HTTP es siempre 202, aunque el bloque muestre otro.
La plantilla 408 - REQUEST ACCEPTED cubre otro caso: un método sobre una vista cuya consulta sigue en curso cuando el motor agota su espera. El gateway responde 408 con el mensaje Trabajando, por favor reintentar en unos minutos, y el cliente repite la misma llamada hasta recibir los datos.
La primera llamada vuelve enseguida con 202 y un identificador. La misma URL con la cabecera X-UUID devuelve los datos del método con su formato, o el 202 de nuevo mientras el motor sigue trabajando.
X-UUID y va en la misma URL del método, con la misma llave de acceso.