2016-09-27 15 views
7

Sau đây sẽ là cuộc gọi node.js của tôi để truy xuất lại một số dữ liệu, mất hơn 1 phút. Đây sẽ là thời gian chờ sau 1 phút (60 giây). Tôi đặt một bảng điều khiển đăng nhập cho độ trễ cũng. Tuy nhiên tôi đã cấu hình thời gian chờ trong 120 giây nhưng nó không phản ánh. Tôi biết thời gian chờ máy chủ cấp độ mặc định của nút nodejs là 120 giây nhưng tôi vẫn có thời gian chờ (trong 60 giây) từ mô-đun request này cho cuộc gọi này. Vui lòng cung cấp thông tin chi tiết của bạn về vấn đề này.Thời gian chờ mặc định cho mô-đun yêu cầu NPM (máy khách REST) ​​là gì?

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

}); 

Trả lời

5

Từ request options docs, cuộn xuống timeout nhập:

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).

Lưu ý phần cuối cùng "nếu kết nối TCP tiềm ẩn không thể được thiết lập, thời gian chờ kết nối TCP OS-rộng sẽ bác bỏ thời gian chờ Tùy chọn".

Ngoài ra còn có toàn bộ phần trên Timeouts. Trên cơ sở đó, và mẫu mã của bạn, chúng tôi có thể thay đổi yêu cầu mẫu như vậy

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

Nếu điều này là đúng, bạn sẽ cần phải quyết định nếu thay đổi cài đặt hệ điều hành có thể và chấp nhận được (điều này nằm ngoài phạm vi của câu trả lời này và một câu hỏi như vậy sẽ tốt hơn trên Server Fault).

+0

Xin chào Matthew, tôi gặp phải lỗi này. {[Lỗi: đọc ECONNRESET] mã: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read'}. Bất kỳ suy nghĩ tại sao tôi nhận được điều này? Thông qua một máy khách REST (POSTMAN/etc), tôi đã có thể nhận được phản hồi trong vòng 1 giây. Nhưng thông qua mô-đun nút này phải mất một thời gian. Và khi tôi cat/proc/sys/net/ipv4/tcp_syn_retries Tôi nhận giá trị là 6. –

+0

Đầu tiên, nếu 'ECONNRESET' là lỗi thì thời gian chờ không phải là vấn đề. Bạn có một vấn đề khác và bạn sẽ thấy câu trả lời Stack Overflow khác: http://stackoverflow.com/a/17637900/2247344 –

Các vấn đề liên quan