Skip to main content

Streaming y trabajos asincrónicos

Como en el resto de SDK, existen dos mecanismos diferenciados:
  1. Transmisión de respuesta (/convert/stream, /convert/stream-from-url): fragmentos de Markdown progresivo mediante devolución de llamada.
  2. Trabajos por saturación (202): la solicitud se pone en cola cuando todos los backends están ocupados. Consulte GET /jobs/{id}.

Transmitiendo con convertStream

markpdf-cpp no expone corrutinas de forma predeterminada (para mantener la compatibilidad con C++17); la transmisión se modela con una devolución de llamada invocada en el mismo hilo durante la duración de la solicitud HTTP subyacente (implementada con CURLOPT_WRITEFUNCTION):

Ejecutar en un hilo separado (no bloquear el hilo principal)

Client es seguro de usar desde otro hilo siempre que no comparta la misma llamada en curso entre hilos.

StreamSlimStrategy

  • Off: streaming puro por página, sin detección de ruido. TTFB mínimo.
  • Sampled (predeterminado): muestra las primeras páginas y luego genera 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)

Por defecto (opts.autoPoll = true), convertFile y convertFromUrl bloquean el hilo que los llama hasta que finaliza el trabajo:

Manual de encuestas

En condiciones de carga normales, no verá 202; solo sucede cuando todos los backends están saturados. autoPoll = true (el predeterminado) ya lo cubre de forma transparente, incluido en el hilo que realiza la llamada.
Los resultados de los trabajos completados caducan en aproximadamente 1 hora. Si guarda un jobId para más tarde y getJob devuelve 404 (asignado a MarkpdfError con statusCode == 404), reenvíe la conversión original.