2016-09-27 32 views
7

1 dakikadan fazla süren bazı verileri geri almak için node.js çağrım olacak. Burada 1 dakika (60 saniye) zaman aşımı olacak. Ayrıca gecikme için bir konsol günlüğü koydum. Ancak zaman aşımını 120 saniyeliğine yapılandırdım ama yansıma yapmıyor. Varsayılan düzey nodejs sunucu zaman aşımının 120 saniye olduğunu biliyorum, ancak yine de bu çağrı için bu request modülünden zaman aşımını (60 saniye) elde ediyorum. Lütfen bunun hakkında bilgi verin. timeout giriş aşağı kaydırma request options docs itibarenNPM istek modülü (REST istemcisi) için varsayılan zaman aşımı nedir?

var options = { 
    method: 'post', 
    url:url, 
    timeout: 120000, 
    json: true, 
    headers: { 
    "Content-Type": "application/json", 
    "X-Authorization": "abc", 
    "Accept-Encoding":"gzip" 
    } 
} 
var startTime = new Date(); 
request(options, function(e, r, body) { 
    var endTime = new Date(); 
    var latencyTime = endTime - startTime; 
    console.log("Ended. latencyTime:"+latencyTime/1000); 
    res.status(200).send(body); 

}); 

cevap

5

:

timeout - Integer containing the number of milliseconds to wait for a server to send response headers (and start the response body) before aborting the request. Note that if the underlying TCP connection cannot be established, the OS-wide TCP connection timeout will overrule the timeout option (the default in Linux can be anywhere from 20-120 seconds).

Not alttaki TCP bağlantısı kurulamazsa eğer son kısmı", OS çapında TCP bağlantısı zaman aşımı zaman aşımı geçersiz olacak seçenek".

Timeouts da tüm bölüm bulunmaktadır. Buna dayanarak, ve kod örneği, bu doğruysa, OS ayarlarını değiştirerek (bu kapsamı dışındadır mümkün ve kabul edilebilir olup olmadığına karar gerekir

request(options, function(e, r, body) { 
    if (e.code === 'ETIMEDOUT' && e.connect === true){ 
    // when there's a timeout and connect is true, we're meeting the 
    // conditions described for the timeout option where the OS governs 
    console.log('bummer'); 
    } 
}); 

gibi istek örneği değiştirebilir Bu cevap ve böyle bir soru Sunucu Hatası konusunda daha iyi olurdu).

+0

Merhaba Matthew, Bu hatayı alıyorum. {[Hata: ECONNRESET okumak] kodu: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read'}. Bunu almamın nedenleri var mı? Bir REST istemcisi (POSTMAN/etc) aracılığıyla yanıtı 1 saniye içinde elde edebildim. Ancak bu düğüm modülü sayesinde biraz zaman alır. Ben cat/proc/sys/net/ipv4/tcp_syn_retries Ben 6. –

+0

Birinci değerini aldığımda ECONNRESET' hatadır 'Ve eğer zaman aşımı sorun değildir. Farklı bir sorununuz var ve diğer Stack Overflow yanıtını görmelisiniz: http://stackoverflow.com/a/17637900/2247344 –

İlgili konular