5

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

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

如果我将我的超时时间设置为一个巨大的数字,部分问题得到解决,但我不明白为什么再次播放请求?

提前非常感谢。

来自我的 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 个 ie 列表现在增加到 1000,第二个说列表是 100,当整个过程完成时,U 有 2 个相似的对象。

希望我解释得很好。

4

1 回答 1

0

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

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

而且我理解这很奇怪,看起来一个幽灵正在向你重新发送相同的请求。其他人一遍又一遍地要求您仔细检查是否不是客户端重新发送请求。

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

于 2016-08-03T05:36:52.890 回答