2017-12-08 32 views
1

수천 개의 데이터를 처리하는 요청이 있습니다. 때로는 완료하는 데 5 분 이상 걸립니다.시간 소비 요청시 루프백 시간 초과 (서버에서 응답 없음)

그러나 유감스럽게도 루프백은 프로세스가 완료되기 전에 시간 초과 (서버에서 응답 없음)를 반환합니다.

nodejs 요청시. 특정 요청에 대한 요청 시간 제한을 아래 코드로 제거 할 수 있습니다.

request.setTimeout(0) 
내가 루프백 원격 메소드이 작업을 수행 할 수있는 방법

사람이 말해 줄래?

답변

1

사용합니다.

내가해야 할 일을했을 모든 어쨌든 0

Visit.remoteMethod(
     'caculateDistance', 
     { 
      description: 'Calculate distance from beacon using rssi', 
      accepts: [ 
       { arg: "req", type: "object", http: { source: "req" } }, 
       { arg: 'activationId', type: 'string', required: true } 
      returns: { arg: 'data', type: 'Object', root: true }, 
      http: { verb: 'patch', path: '/:activationId/calculate-distance' }, 
     } 
    ); 


Visit.caculateDistance = function (httpReq, activationId, callbackFn) { 
     httpReq.setTimeout(0); 
     /////calculations.... 
}); 

감사에 통과 http req object 내 원격 메소드에서 다음 설정 제한 시간입니다!

1

나는이 아주 확실하지 오전하지만 난이

당신은 특정 경로 또는 server.js 파일의 모든 경로에 대한 요격을 만들 수 있습니다 작동 할 수 느끼는 당신은 그것을 시도를 제공 할 수 있습니다.

app.all('/api/*', function(req, res, next){ 
    request.setTimeout(0); // this is the statement and pass it to the next middle ware func. 
    next(); 
}); 

하지 당신은 또한 그 경로에 대한 원격 방법을 사용할 수 있습니다 거기 같은를 추가하는 경우. 단일 API를 위해 그것을 원하는 경우

업데이트

단지 그 때처럼 보였다 아주 쉬웠다

app.all('<exact api path>', function(req, res, next){ 
    request.setTimeout(0); // this is the statement and pass it to the next middle ware func. 
    next(); 
}); 
+0

제안 해 주셔서 감사합니다.하지만 단 하나의 API 만 필요합니다. 다른 어떤 것에도 영향을 미치지 않아야합니다. –

+1

@AnkurAkvaliya 그러면 'app.all ('api 경로 전달 ')의 최상위 클래스와 동일한 원격 메소드로 이동할 수 있습니다. 그러면 해당 API에서만 작동합니다 –