Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

274
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda