Express.js 응답 시간 초과
문제
Express.js에 대한 요청 / 응답 시간 초과를 찾고 있었지만 모든 것이 요청 / 응답 자체가 아닌 연결과 관련된 것 같습니다.
요청이 오래 걸리는 경우 시간 초과되어야합니다. 분명히 이것은 일어나서는 안되지만 콜백에 대한 호출이 없거나없는 라우트 핸들러가있는 간단한 실수라도 res.send()
브라우저는 응답을 영원히 기다릴 것입니다.
빈 경로 핸들러가 이에 대한 완벽한 예입니다.
app.get('/sessions/', function(req, res, callback){});
고치다
전에 다음 app.use(app,router);
을 추가했는데 시간 제한 기능을 추가 한 것 같습니다. 누구든지 이것에 대한 경험 / 의견이 있습니까?
app.use(function(req, res, next){
res.setTimeout(120000, function(){
console.log('Request has timed out.');
res.send(408);
});
next();
});
시간 제한을 2 분으로 설정했습니다.
Timeout 지원을위한 Connect Middleware가 이미 있습니다.
var timeout = express.timeout // express v3 and below
var timeout = require('connect-timeout'); //express v4
app.use(timeout(120000));
app.use(haltOnTimedout);
function haltOnTimedout(req, res, next){
if (!req.timedout) next();
}
위와 같이 타임 아웃 미들웨어를 최상위 미들웨어로 사용하려는 경우 haltOnTimedOut
미들웨어는 스택에 정의 된 마지막 미들웨어 여야하며 타임 아웃 이벤트를 포착하는 데 사용됩니다. 업데이트에 대해 @Aichholzer에게 감사드립니다.
참고 :
자체 시간 초과 미들웨어를 롤링하는 경우 4xx 상태 코드는 클라이언트 오류 용이고 5xx는 서버 오류 용입니다. 408은 다음과 같은 경우에 예약됩니다.
클라이언트는 서버가 대기 할 준비가 된 시간 내에 요청을 생성하지 않았습니다. 클라이언트는 나중에 수정없이 요청을 반복 할 수 있습니다.
Express 4.2를 사용하는 경우 시간 초과 미들웨어가 제거되었으므로 수동으로 추가해야합니다.
npm install connect-timeout
코드에서 (코멘트에 따라 편집, 코드에 포함하는 방법)
var timeout = require('connect-timeout');
app.use(timeout('100s'));
이 작업을 수행하기 위해 다른 npm 모듈이 필요하지 않습니다.
var server = app.listen();
server.setTimeout(500000);
https://github.com/expressjs/express/issues/3330에서 영감을 얻었습니다.
또는
app.use(function(req, res, next){
res.setTimeout(500000, function(){
// call back function is called when request timed out.
});
next();
});
request.setTimeout(< time in milliseconds >)
일을한다
https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback
경로를 설정하기 전에 코드를 추가하세요.
app.all('*', function(req, res, next) {
setTimeout(function() {
next();
}, 120000); // 120 seconds
});
참조 URL : https://stackoverflow.com/questions/21708208/express-js-response-timeout
'Development Tip' 카테고리의 다른 글
자바 스크립트 익명 함수 끝에 ".call (this)"을 쓰는 이유는 무엇입니까? (0) | 2020.12.30 |
---|---|
Python 3 인터프리터에 JIT 기능이 있습니까? (0) | 2020.12.30 |
translate3d 대 번역 성능 (0) | 2020.12.30 |
Windows에서 PostgreSQL을 시작하는 방법 (0) | 2020.12.30 |
Docker-Compose를 사용하는 경우 및 Docker-Swarm을 사용하는 경우 (0) | 2020.12.30 |