• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

139
Views
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.

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

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?

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error