2016-01-17 17 views
5

tôi đã thiết lập một kịch bản watir-Webdriver mà tôi muốn báo cáo đến một dịch vụ từ xa:Tại sao Net: HTTP/HTTParty cuộc gọi gián đoạn watir-Webdriver script/Net :: ReadTimeout lỗi

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" 

Tại Đồng thời, Node.js/watir nhanh được ping để có thiết bị đầu cuối như sau:

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'); 
}); 

Câu hỏi: Tại sao Net :: HTTP thời gian ra khi đánh /update_status? Thật thú vị, nếu máy chủ trả về 404 (điểm cuối không tồn tại), kịch bản Watir vẫn tiếp tục bình thường.

Net::ReadTimeout rõ ràng là culrpit, nhưng tại sao?

Trả lời

2

"Giả định là mẹ của tất cả các vấn đề" - diễn giải một số anh chàng hoặc cô gái rất thông minh.

Câu trả lời là đơn giản vì nó là ngớ ngẩn - tôi đã thêm một phần mềm trung gian node.js bỏ qua số next(); trong đó. Không có gì sai với kịch bản, khi nó quay ra - tôi đã tìm kiếm ở nơi sai và không có một thử nghiệm cho nó. Rất tiếc.

Các vấn đề liên quan