Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
node.js - ¿Cómo ajustar el tamaño del búfer de salida estándar (también conocido como highWaterMark) de child_process.spawn ()?

Estoy intentando ajustar el tamaño del búfer ( stdout ) para la salida estándar de una llamada child_process.spawn(), y tengo dificultades para hacerlo con éxito. A continuación hay un código que ilustra lo que estoy buscando. Estoy tratando de realizar algunas evaluaciones comparativas con varios tamaños de búfer estándar, pero hasta que no pueda ajustar el tamaño del búfer, no podré hacerlo. ¡Cualquier consejo sería apreciado, gracias!

 // I'm using the `stdout` from a child_process.spawn() call to feed into another stream, and I'm having a hard time increasing the buffer size on stdout. // The code below illustrates the issue: const child_process = require('child_process'); const stream = require('stream'); const fs = require('fs'); const compressStream = child_process.spawn("cat", ["testfile_32MB"], {writableHighWaterMark: 1024*1024, highWaterMark: 1024*1024}); // <-- child_process.spawn does not have highWaterMark or writableHighWaterMark options, so including them has no effect, but I'm including it just as an illustration of what I want. compressStream.stdout.writableLength = 1024*1024; // <-- This does not help. compressStream.stdout._writableState.writableLength = 1024*1024; // <-- This does not help. compressStream.stdout._writableState.writableHighWaterMark = 1024*1024; // <-- This does not help. compressStream.stdout.writableHighWaterMark = 1024*1024; // <-- This does not help. compressStream.stdout._readableState.highWaterMark = 1024*1024; // <-- This does not help. compressStream.stdout._writableState.highWaterMark = 1024*1024; // <-- This does not help. compressStream.stdout.on("data", (data) => { console.log("data length [from spawn()]:", data.length); // <-- data.length will always be <= 64KB! How can we get it higher? }); const readStream = fs.createReadStream("testfile_32MB", {highWaterMark: 1024*1024}); readStream.on("data", (data) => { console.log("data length [from createReadStream()]:", data.length); // <-- This prints values <= 1MB, which is what I wish I had for child_process.spawn/stdout... });

Tenga en cuenta que necesitará un archivo llamado "testfile_32MB" para ejecutar este código de ejemplo, y debe tener al menos unos pocos megabytes de tamaño.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Por desgracia, no puedes hacer esto. highWaterMark es un mecanismo que se utiliza para señalar al escritor que se detenga porque el lector no está leyendo y su búfer está lleno.

Un Socket le enviará los datos tan pronto como estén disponibles. Siempre utilizará un búfer interno de 64k codificado de forma rígida. El aumento de highWaterMark lo hará capaz de contener más datos, pero aún le enviará fragmentos de 64 Kb, excepto que obtendrá ráfagas de varias llamadas por rotación de bucle de evento.

No tiene acceso a las opciones de creación de Stream cuando usa spawn ; eventualmente puede pasar un flujo de canalización con nombre preconstruido, pero esto no resolverá su problema.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda