2017-12-08 12 views
1

私は何千ものデータを処理する要求を持っています。時には完了までに5分以上かかります。時間を消費するときのループバックタイムアウト(サーバからの応答なし)

しかし残念ながら、ループバックはプロセスが完了する前にタイムアウト(サーバからの応答なし)を返します。

nodejsリクエストで。特定のリクエストのリクエストタイムアウトは、下のコードで削除できます。

request.setTimeout(0) 

誰も私がループバックリモートメソッドのためにこれを行うことができる方法を教えてもらえますか?

答えて

1

を使用する単一のAPIのためにそれをしたい場合は、それはのように見えました。

私がしなければならなかったすべては私のリモートメソッドでhttp req objectを渡した後、とにかく感謝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.... 
}); 

にタイムアウトを設定しています!

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(); 
}); 

あなたもそのルートのリモートメソッドを使用して、そこ 同じを追加することができない場合。

更新

あなたはそれが非常に簡単だっただけ

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のみで動作します –

関連する問題