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

270
Vistas
AWS Lambda no ejecuta las promesas sin esperar

Tengo el siguiente controlador para mi función AWS Lambda. No quiero ni necesito esperar a que Promise.all resuelva o rechace. Porque, no estoy interesado en su resultado. Mi propósito es simplemente enviar esas solicitudes y terminar. El problema es que si elimino la palabra clave await (señalada con una flecha), las solicitudes no se activan. Pero, si coloco la palabra clave await , la función Lambda debe ejecutarse y cargarse durante 3 a 5 segundos, y no es rentable para mí.

¿Podría explicar lo que estoy haciendo mal? ¿Por qué las solicitudes no se envían sin la palabra clave await ?

 module.exports.handler = async (event) => { try { const urls = [/*some API urls*/]; --> await Promise.all(urls.map((url) => { return axios.post(url, { email }) .catch((error) => { console.log(error); }); })); return { statusCode: 200, body: JSON.stringify({ message: 'OK' }), headers: { 'Content-Type': 'application/json', }, }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ message: 'INTERNAL_ERROR' }), headers: { 'Content-Type': 'application/json', } } } };
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Como se indica en los documentos

Si su código realiza una tarea asincrónica, devuelva una promesa para asegurarse de que termine de ejecutarse. Cuando resuelve o rechaza la promesa, Lambda envía la respuesta o el error al invocador.

Si no devuelve una promesa, no hay garantía de que sus tareas asincrónicas se ejecuten hasta el final. Al hacer que el controlador sea async , de hecho está devolviendo una promesa. Pero sin await la Promise.all esta promesa del controlador se resuelve de inmediato y, por lo tanto, se detiene la ejecución de su lambda (y todas las tareas asincrónicas sin terminar).

Y esto parece bastante lógico. De lo contrario, todos escribirían los cálculos de trabajo pesado en una tarea asíncrona que se ejecuta durante mucho tiempo. Y la única llamada síncrona en la función lambda sería llamar a esa tarea asíncrona y la función lambda regresaría después (y se le cobraría) solo unos pocos milisegundos.

Si desea pagar solo por 100 ms, haga su tarea lo suficientemente rápido. Si tu tarea toma 4 segundos, tienes que pagar por 4 segundos.

over 4 years ago · Santiago Trujillo 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