Connect/Express 애플리케이션 프레임워크에서 요청 시간이 초과되었습니다.
이는 npm 레지스트리를 통해 사용할 수 있는 Node.js 모듈입니다. 설치는 npm install
명령을 사용하여 수행됩니다.
$ npm install connect-timeout
참고 이 모듈은 자체 미들웨어 처리를 중단하기 위해 예방 조치를 취하지 않는 한 "최상위" 미들웨어(예: app.use(timeout('5s'))
)로 권장되지 않습니다. 최상위 미들웨어로 사용하는 방법은 최상위 미들웨어를 참조하세요.
요청이 지정된 제한 시간을 초과하면 라이브러리는 'timeout' 이벤트를 내보내지만 노드는 종료될 때까지 느린 요청을 계속 처리합니다. 제한 시간 콜백에서 HTTP 응답을 반환하더라도 느린 요청은 CPU와 메모리를 계속 사용합니다. CPU/메모리를 더 잘 제어하려면 시간이 오래 걸리는 이벤트(타사 HTTP 요청, 디스크 I/O, 데이터베이스 호출)를 찾아서 이를 취소하거나 연결된 소켓을 닫는 방법을 찾아야 할 수도 있습니다. .
time
초 단위로 시간 초과되는 미들웨어를 반환합니다. time
ms 모듈에서 허용하는 문자열일 수도 있습니다. 시간 초과 시 req
"timeout"
발생시킵니다.
timeout
함수는 다음 키 중 하나를 포함할 수 있는 선택적 options
개체를 사용합니다.
이 모듈이 오류를 전달하는 형태로 "응답"할지 여부를 제어합니다. true
인 경우 응답 동작을 사용자 정의할 수 있도록 시간 초과 오류가 next()
로 전달됩니다. 이 오류에는 .timeout
속성과 .status == 503
이 있습니다. 기본값은 true
입니다.
요청의 시간 초과를 지웁니다. 시간 초과가 완전히 제거되었으며 앞으로는 이 요청에 대해 실행되지 않습니다.
시간 초과가 발생하면 true
, 그렇지 않으면 false입니다. 그렇지 않으면 false
입니다.
미들웨어 처리 작동 방식으로 인해 이 모듈이 요청을 다음 미들웨어로 전달하면(작업을 수행하기 위해 수행해야 하는) 더 이상 흐름을 멈출 수 없으므로 다음 미들웨어가 있는지 확인해야 합니다. 요청에 대한 조치를 계속하기 전에 요청 시간이 초과되었습니다.
var bodyParser = require ( 'body-parser' )
var cookieParser = require ( 'cookie-parser' )
var express = require ( 'express' )
var timeout = require ( 'connect-timeout' )
// example of using this top-level; note the use of haltOnTimedout
// after every middleware; it will stop the request flow on a timeout
var app = express ( )
app . use ( timeout ( '5s' ) )
app . use ( bodyParser ( ) )
app . use ( haltOnTimedout )
app . use ( cookieParser ( ) )
app . use ( haltOnTimedout )
// Add your routes here, etc.
function haltOnTimedout ( req , res , next ) {
if ( ! req . timedout ) next ( )
}
app . listen ( 3000 )
var express = require ( 'express' )
var bodyParser = require ( 'body-parser' )
var timeout = require ( 'connect-timeout' )
var app = express ( )
app . post ( '/save' , timeout ( '5s' ) , bodyParser . json ( ) , haltOnTimedout , function ( req , res , next ) {
savePost ( req . body , function ( err , id ) {
if ( err ) return next ( err )
if ( req . timedout ) return
res . send ( 'saved as id ' + id )
} )
} )
function haltOnTimedout ( req , res , next ) {
if ( ! req . timedout ) next ( )
}
function savePost ( post , cb ) {
setTimeout ( function ( ) {
cb ( null , ( ( Math . random ( ) * 40000 ) >>> 0 ) )
} , ( Math . random ( ) * 7000 ) >>> 0 )
}
app . listen ( 3000 )
var bodyParser = require ( 'body-parser' )
var connect = require ( 'connect' )
var timeout = require ( 'connect-timeout' )
var app = connect ( )
app . use ( '/save' , timeout ( '5s' ) , bodyParser . json ( ) , haltOnTimedout , function ( req , res , next ) {
savePost ( req . body , function ( err , id ) {
if ( err ) return next ( err )
if ( req . timedout ) return
res . send ( 'saved as id ' + id )
} )
} )
function haltOnTimedout ( req , res , next ) {
if ( ! req . timedout ) next ( )
}
function savePost ( post , cb ) {
setTimeout ( function ( ) {
cb ( null , ( ( Math . random ( ) * 40000 ) >>> 0 ) )
} , ( Math . random ( ) * 7000 ) >>> 0 )
}
app . listen ( 3000 )
MIT