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

272
Views
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 answers
Answer question

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 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!