Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
Solicitud de API sincronizada y escritura en archivos

Estoy trabajando en una aplicación node.js que, una vez por semana, realizará una serie de solicitudes de obtención de API y almacenará el JSON devuelto en archivos.

Actualmente, el código itera en un bucle for, usando cada cadena en una matriz como parámetro para la solicitud. Para cada parámetro, solicitará, esperará el JSON devuelto, escribirá el JSON en un archivo y luego pasará al siguiente.

Esto lleva tiempo, y aunque esto solo se ejecuta una vez a la semana, estoy interesado en cualquier forma en que pueda acelerarlo. ¿Hay alguna forma en que pueda realizar simultáneamente solicitudes de búsqueda, pero seguir escribiendo en archivos individuales? Cuando intenté esto anteriormente, los archivos se crean pero no se escriben.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Suponiendo que escribe cada llamada a la API en un archivo separado, esto se puede construir de manera asíncrona. Si eso termina acelerando el rendimiento o no, depende de cuánto termine saturando las diversas transmisiones de IO.

Aquí está el pseudocódigo para demostrar. He hecho esto un poco más declarativo de lo que debe ser... es decir, podría ser más elegante que esto, pero para mostrar el patrón general:

 async function callToAPI(uri) { // have your api call logic here, resolve to desirable response. } async function writeToDisk(body) { // have your disk writing logic here. } function doAllMyWork() { var api1 = callToAPI(someAPIurl1); var api2 = callToAPI(someAPIurl2); var res1, res2; [ res1, res 2] = await Promise.all([ api1, api2 ]); var dsk1 = writeToDisk(res1); var dsk2 = writeToDisk(res2); var dskRes1, dskRes2; [ dskRes1, dskRes2 ] = await Promise.all([ dsk1, dsk2 ]); console.log(dskRes1); console.log(dskRes2); }

¿Qué tiene de malo este modelo simplista? Bueno, espere todas sus llamadas de API antes de comenzar sus llamadas de disco. Puede soltar el flujo de api->disk en una sola promesa y paralelizar esas promesas, como una simplificación, y agregaría otra muesca de aumento de rendimiento, especialmente si algunas llamadas api son más largas, más lentas o tienen cargas útiles significativamente más grandes que otras.

Aún así, su rendimiento general estará limitado por (A) la saturación de io y (B) el tiempo que lleva que ocurra la operación más larga.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda