Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

95
Views
¿Hay alguna forma de limitar la cantidad máxima de procesos paralelos que cargan fragmentos en dropzone.js?

Necesitamos ser capaces de soportar cargas grandes a nuestro sitio. Es por eso que implementamos la carga fragmentada con Dropzone.js.

Funciona muy bien, pero cuando uso un archivo muy grande, puedo ver en la vista de depuración de la red de Chrome que todas las solicitudes se inician inmediatamente en un estado pendiente y el navegador no puede mantenerse al día. Después de un tiempo, hay demasiadas solicitudes abiertas y Chrome comienza a mostrar "net::ERR_INSUFFICIENT_RESOURCES" para algunas de las solicitudes pendientes.

Estas son las opciones relevantes de nuestra configuración de Dropzone:

 [...] parallelUploads: 1, // only one file is uploaded at a time maxFilesize: 8148, // max individual file size 8 GB chunking: true, // enable chunking forceChunking: true, // forces chunking when file.size < chunkSize parallelChunkUploads: true, // allows chunks to be uploaded in parallel chunkSize: 2*1024*1024, // chunk size 2MB retryChunks: true, // retry chunks on failure retryChunksLimit: 3 [...]

Este es uno de los cientos de errores de recursos insuficientes de la consola de Chrome al cargar archivos grandes:

 dropzone.js:9622 POST http://localhost:44802/AuthenticatedFolder/65fc862e-4cb1-41b0-a39c-f6a41ea5e64d/DoChunkedUpload/A8BB25EA676977DC6F064AEEE636E388FCF5E513 net::ERR_INSUFFICIENT_RESOURCES submitRequest @ dropzone.js:9622 _uploadData @ dropzone.js:9406 handleNextChunk @ dropzone.js:9218 (anonymous) @ dropzone.js:9248 (anonymous) @ dropzone.js:9423 transformFile @ dropzone.js:7545 _loop @ dropzone.js:9419 _transformFiles @ dropzone.js:9429 uploadFiles @ dropzone.js:9171 processFiles @ dropzone.js:9078 processFile @ dropzone.js:9051 processQueue @ dropzone.js:9042 (anonymous) @ dropzone.js:8743 setTimeout (async) enqueueFile @ dropzone.js:8742 (anonymous) @ dropzone.js:8705 accept @ dropzone.js:7407 accept @ dropzone.js:8669 addFile @ dropzone.js:8695 (anonymous) @ dropzone.js:8571 _addFilesFromItems @ dropzone.js:8595 drop @ dropzone.js:8510 drop @ dropzone.js:8225

Estoy usando la última versión 5 de dropzone (5.9.3).

¿Hay alguna forma de limitar el número de solicitudes en ejecución paralelas? Si no, sería una gran adición a las opciones. Como solución temporal, deshabilité las cargas paralelas de Chunk. Funciona, pero por supuesto también ralentiza la carga.

¡Gracias por cualquier ayuda!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Tenemos exactamente el mismo problema en una aplicación en el trabajo. Hay una solicitud de fusión aquí https://gitlab.com/meno/dropzone/-/merge_requests/53 que proporciona una solución. He preguntado sobre el estado, pero la solicitud de fusión ya es bastante antigua. Sin embargo, la solución parece implementarse con bastante facilidad y nuestro plan actual es copiar el código fuente de Dropzone y hacerlo nosotros mismos. Obviamente, esto no es lo ideal, ya que confiaríamos en una copia local de cualquier versión que copiemos, pero podría valer la pena hasta que Dropzone decida resolverlo por sí mismo. Te mantendré informado

about 4 years ago · Juan Pablo Isaza Report

0

Una solución que funcionó para mi caso es:

 // Wrapper for upload process to prevent "Not enough resource error" const oldFunction = fileUploader.submitRequest; let inProgress = 0; fileUploader.submitRequest = function(xhr, formData, files){ runQueue(oldFunction,this,xhr, formData, files) } function runQueue(uploadDataFunction,scope,xhr, formData, files){ if(inProgress <= 50){ inProgress++; xhr.onreadystatechange = function () { if (xhr.readyState === 4) { inProgress--; } } uploadDataFunction.call(scope,xhr, formData, files); }else{ setTimeout(function(){runQueue(uploadDataFunction,scope,xhr, formData, files)},100); } }

Anulo la función que es responsable de procesar las solicitudes individuales. Ponga en cola 50 procesos en paralelo (que yo sepa, Chrome procesa un máximo de 2 procesos en paralelo) para que haya un búfer y todos los demás procesos se vuelvan a verificar después de un tiempo de espera y, si hay menos de 50 procesos en cola, se agregan.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!