Estoy usando el código de esta pregunta para archivar archivos usando node-archiver y transferirlos a S3. Mi tarea específica requiere que descargue una gran cantidad de archivos de URL, los comprima en un archivo y los transfiera a S3.
Estoy usando la biblioteca Javascript "obtenida" para hacer esto.
for (const file of files) { const { resultFileName, fileUrl} = getFileNameAndUrl(file); if (!fileUrl) continue; const downloadStream = got.stream(fileUrl, { retry: { limit: 5 } }); archive.append(downloadStream, { name: resultFileName }); }El resto del código es prácticamente el mismo que en la pregunta original . El problema es que el script no funciona bien con una gran cantidad de archivos (simplemente finaliza la ejecución en algún momento).
En el mundo perfecto: quiero que este script descargue archivos, los agregue para archivarlos y los transfiera a S3 usando tuberías. Y lo mejor es descargarlos por lotes (algo así como Promise.map con concurrencia en bluebird). Simplemente no entiendo cómo hacerlo con Streams, ya que no tengo mucha experiencia con ellos.