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

215
Vistas
Express handler llamado de nuevo sin solicitud del cliente

En el código a continuación, el cliente POST envía algunos datos a /somewhere y luego se ejecuta la devolución de llamada del controlador de ruta.

Dentro de la devolución de llamada, estoy esperando que se resuelva una Promise antes de enviar algún resultado al cliente.

The Promise tardará bastante tiempo en resolverse. Esto se espera.

No sé cuánto tiempo tomará porque alrededor de 2-3 minutos después de la ejecución de Promise, se vuelve a llamar al controlador app.post('/somewhere') , aunque el cliente no hace tal solicitud (marcado). No hay actividad en el cliente durante todo este tiempo, no hay actualización de página, redirección... nada.

Además, no se generan errores desde forSomethingReallySlow() ya que no se registra nada relevante en la consola de Node. Y tengo registros extensos dentro de forSomethingReallySlow() donde todo funciona bien hasta que se vuelve a llamar al controlador y forSomethingReallySlow() reinicia.

 app.use(cors({ origin: '*', credentials: true, optionSuccessStatus: 200 })) app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', 'http://localhost:4200') res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization') res.header('Access-Control-Allow-Methods', 'POST, GET') next() }) app.use(cookieParser()) app.use(bodyParser.json({limit: "50mb"})); app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000})) app.use(session({ secret: 'googoogaga', resave: false, saveUninitialized: false })) app.use(passport.initialize()) app.use(passport.session()) passport.use(new FacebookStrategy({ clientID : FACEBOOK_APP_ID, clientSecret : FACEBOOK_APP_SECRET, callbackURL : "http://localhost:4200/facebook/callback", profileFields : ['id'] }, async(accessToken, refreshToken, profile, done) => { let facebookId = profile.id let userInDb = await DB.getUser() if (userInDb && userInDb.facebookId === facebookId) { await DB.updateUser({ accessToken }) done(null, userInDb) } else { let newUser = await DB.updateUser({ facebookId, accessToken }) done(null, newUser) } })) passport.serializeUser(function(user, done) { done(null, user) }) passport.deserializeUser(function(user, done) { done(null, user) }) app.post('/somewhere', ensureLoggedIn('/auth/facebook'), jsonParser, async function(req, res){ console.log('new POST request at: ', new Date()) let result = await forSomethingReallySlow(req.body) res.status(200).send({ result }) })

¿Hay alguna característica Express interna que vuelva a llamar a un controlador si tarda demasiado en responder? Y puedo desactivarlo? ¿O hay algo más mal? De forma anticipada, muchas gracias por su ayuda.

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

0

¡Oooooo, 2 minutos suena muy cerca de la configuración de tiempo de espera predeterminada en Express, que es de 120 segundos! ¿Puedes probar esto res.connection.setTimeout(0); justo cuando comienza la función?

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