Streaming y trabajos asincrónicos
Como en el resto de SDK, existen dos mecanismos diferenciados:
- Transmisión de respuesta (
/convert/stream, /convert/stream-from-url): fragmentos de Markdown progresivo mediante devolución de llamada.
- 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.