Sak*_*hil 5 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);
}); });
Run Code Online (Sandbox Code Playgroud)
从我的控制台片断
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
Run Code Online (Sandbox Code Playgroud)
有关信息:我收到100块数据我收到900个数据列表然后服务器超时但我们可以在控制台上看到请求再次检查最后2组,第一个显示下一个100即列表现在增加到1000,第二个表示列表是100,当整个过程完成时,U有2个相似的对象.
希望我解释得很好.
我也有同样的问题。我在堆栈溢出中看到了另一个答案,它解释了根据HTTP协议规范,http客户端可以在超时后重新发送请求。对于express,默认服务器超时为2分钟( https://nodejs.org/api/all.html#http_server_settimeout_msecs_callback )。
如果您从浏览器访问该端点,这可能就是您的情况。
我明白这很奇怪,看起来就像一个幽灵正在向你重新发送相同的请求。其他人一遍又一遍地要求你仔细检查是否不是客户端重新发送请求。
如果我找到其他答案并对这种幽灵行为有更好的解释,我会更新这个答案。