在下面的代碼中,客戶端將POST一些資料發送到/somewhere,然后執行路由處理程式回呼。
在回呼中,我等待 aPromise解決,然后再將一些結果發送回客戶端。
Promise 將需要相當長的時間來解決。這是預期的。
我不知道需要多長時間,因為在 Promise 執行大約 2-3 分鐘后,app.post('/somewhere')處理程式再次被呼叫,即使客戶端沒有發出這樣的請求(已檢查)。在這段時間內客戶端沒有任何活動,沒有頁面重繪 ,重定向......什么都沒有。
此外,forSomethingReallySlow()由于 Node 控制臺上沒有記錄任何相關內容,因此不會引發任何錯誤。我有大量的日志,在forSomethingReallySlow()那里一切正常,直到再次呼叫處理程式并forSomethingReallySlow()重新啟動。
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 })
})
如果回應時間過長,是否有一些內部 Express 功能可以重新呼叫處理程式?我可以禁用它嗎?還是有其他問題?提前謝謝你的幫助。
uj5u.com熱心網友回復:
Oooooo 2 分鐘聽起來非常接近 express 上的默認超時設定,即 120 秒!你能試試這個 res.connection.setTimeout(0); 功能啟動時對嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/339480.html
標籤:javascript 节点.js 表达 快递路由器
