Nodejs + expressjs在服务器超时后重放请求

时间:2012-10-24 11:36:06

标签: javascript node.js express

我正试图通过app.get("/importdata" , callback)在节点+快递应用中导入大量数据。在超时时,如果请求未完成,它会再次重播请求,我的服务器会再次开始导入相同的数据。

我无法找到连接超时后重播请求的确切原因?

如果我将timeOut时段设置为某个庞大的数字,但问题的一部分已经解决但我不明白为什么请求再次播放?

提前多多感谢。

来自我的server.js

app.get('/impdata', function(req, res){
req.connection.setTimeout(600000);
console.log("impstore--------------->");
Q.when( getData(req.data), function(resp){
    res.json(resp);
}); });

来自我的控制台

impstore--------------->
userid 
time stamp Wed Oct 24 2012 16:35:28 GMT+0530 (IST)
Listings got 100
userid 
ims 1
time stamp recursive
Listings got 200
userid 
ims 1
time stamp recursive
Listings got 300
userid 
ims 1
time stamp recursive
Listings got 400
userid 
ims 1
time stamp recursive
Listings got 500
userid 
ims 1
time stamp recursive
Listings got 600
userid 
ims 1
time stamp recursive
Listings got 700
userid 
ims 1
time stamp recursive
Listings got 800
userid 
ims 1
time stamp recursive
Listings got 900
userid 
ims 1
time stamp recursive
impstore--------------->
userid 
time stamp Wed Oct 24 2012 16:37:28 GMT+0530 (IST)
Listings got 1000
userid 
ims 1
time stamp recursive
Listings got 100
userid 
ims 1

有关信息:我获取的数据为100块 我收到900个数据列表,然后服务器超时,但正如我们在控制台上看到的那样,再次请求检查最后2组,第一个显示下一个100,即列表现在增加到1000,第二个显示列表是100当整个过程完成时,U有两个相似的对象。

希望我解释得很清楚。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我在堆栈溢出中看到了另一个答案,它解释了根据HTTP协议规范,http客户端可以在超时后重新发送请求。对于express,默认服务器超时为2分钟(https://nodejs.org/api/all.html#http_server_settimeout_msecs_callback)。

如果您从浏览器访问该端点,则可能是您的情况。

我理解这种奇怪之处,看起来鬼正在重新向你发送相同的请求。其他人一遍又一遍地要求你仔细检查是否客户没有重新发送请求。

如果我找到另一个答案并更好地解释这种幽灵行为,我会更新这个答案。