Skip to main content

Streaming y trabajos asincrónicos

Hay dos mecanismos “asincrónicos” diferentes en API y SDK los maneja por separado:
  1. Transmisión de respuesta (/convert/stream, /convert/stream-from-url): el servidor genera el Markdown en fragmentos progresivos durante la conversión, para reducir el TTFB en documentos grandes.
  2. Trabajos de saturación (202): cuando todos los servidores están ocupados, cualquier punto final de conversión pone en cola la solicitud y responde 202 con un job_id para realizar una consulta más tarde. Consulte GET /jobs/{id}.

Transmitiendo con convert_stream

convert_stream devuelve un iterador Iterator[str]; cada elemento es un fragmento de Markdown, no necesariamente una línea o página completa. Concatenarlos para reconstruir el documento.

stream_slim_strategy

Controla cómo se limpian los encabezados y pies de página repetidos sin sacrificar demasiado TTFB:
  • "off": streaming puro por página, sin detección de ruido. TTFB mínimo.
  • "sampled" (predeterminado): muestree las primeras páginas en busca de ruido y luego genere por página.
  • "full": materializa el documento completo antes de su emisión. Mejor limpieza, peor TTFB.
Consulte Parámetros.

Empleos por saturación (202)

De forma predeterminada, convert_file y convert_from_url manejan 202 de forma transparente:
Internamente, si el servidor responde 202, el SDK:
  1. Lea job_id y retry_after_seconds de la respuesta.
  2. Dormir retry_after_seconds (5 segundos por defecto).
  3. Llama GET /jobs/{job_id}.
  4. Repite mientras status sea "queued" o "processing".
  5. Devuelve body cuando status == "completed", o arroja MarkpdfJobFailedError si status == "failed".

Manual de encuestas

Si prefieres controlar el bucle tú mismo (por ejemplo, para mostrar el progreso en una interfaz de usuario), desactiva la encuesta automática:
En condiciones de carga normales, nunca verá 202; solo sucede cuando todos los backends están saturados. No necesita diseñar su aplicación asumiendo que siempre sucederá; auto_poll=True (el valor predeterminado) ya lo cubre sin código adicional.
Los resultados de los trabajos completados caducan en aproximadamente 1 hora. Si guarda job_id para referencia posterior y recibe 404, reenvíe la conversión original.