繁体   English   中英

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

[英]Nodejs + expressjs replays request after server timeout

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

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

如果我将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有2个相似的对象。

希望我解释得很好。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM