为什么 Net:HTTP / HTTParty 调用中断 Watir-Webdriver 脚本 / Net::ReadTimeout 错误
Why do Net:HTTP / HTTParty calls interrupt Watir-Webdriver script / Net::ReadTimeout error
我已经设置了一个 Watir-Webdriver 脚本,我想将其报告给远程服务:
puts "Starting..."
b = Watir::Browser.new :ie
puts "Started browser"
puts "Setting status as non-idle"
request = Net::HTTP::Post.new()
url = URI(HOME + '/update_status')
request.body = JSON.generate({ scrapeId: SCRAPE_ID, status: 'working' })
# This step freezes processing
Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
puts "This step never happens"
同时,node.js/express watir 正在 ping 到以下端点:
app.post('/update_status', function(req, res) {
redis.hset(req.body.scrapeId, 'status', req.body.status);
if (req.body.status === 'finished') {
redis.expire(req.body.scrapeId, SIX_HOURS);
}
res.send('response from post /update_status');
});
问题:为什么Net::HTTP在点击/update_status
时超时?有趣的是,如果服务器 returns 404(端点不存在),Watir 脚本会正常继续。
Net::ReadTimeout
显然是罪魁祸首,但为什么呢?
"Assumption is the mother of all problems" - 转述一些非常聪明的人或女孩。
答案既简单又愚蠢 - 我添加了一个 node.js 中间件,省略了其中的 next();
。事实证明,脚本没有任何问题 - 我在错误的地方寻找并且没有对其进行测试。哎呀
我已经设置了一个 Watir-Webdriver 脚本,我想将其报告给远程服务:
puts "Starting..."
b = Watir::Browser.new :ie
puts "Started browser"
puts "Setting status as non-idle"
request = Net::HTTP::Post.new()
url = URI(HOME + '/update_status')
request.body = JSON.generate({ scrapeId: SCRAPE_ID, status: 'working' })
# This step freezes processing
Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
puts "This step never happens"
同时,node.js/express watir 正在 ping 到以下端点:
app.post('/update_status', function(req, res) {
redis.hset(req.body.scrapeId, 'status', req.body.status);
if (req.body.status === 'finished') {
redis.expire(req.body.scrapeId, SIX_HOURS);
}
res.send('response from post /update_status');
});
问题:为什么Net::HTTP在点击/update_status
时超时?有趣的是,如果服务器 returns 404(端点不存在),Watir 脚本会正常继续。
Net::ReadTimeout
显然是罪魁祸首,但为什么呢?
"Assumption is the mother of all problems" - 转述一些非常聪明的人或女孩。
答案既简单又愚蠢 - 我添加了一个 node.js 中间件,省略了其中的 next();
。事实证明,脚本没有任何问题 - 我在错误的地方寻找并且没有对其进行测试。哎呀