2016-01-17 5 views
5

Ich habe die Einrichtung eines Watir-WebDriver Skript unterbrechen, die ich an einen Remote-Service melden:Warum Net: HTTP/HTTParty Anrufe Watir-WebDriver script/Net :: Readtimeout Fehler

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" 

Bei zur gleichen Zeit, node.js/express watir ist Pingen den folgenden Endpunkt hat:

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

Frage: Warum ist Net :: HTTP Timing, wenn /update_status schlagen? Interessanterweise, wenn der Server 404 zurückgibt (Endpunkt existiert nicht), wird das Watir-Skript normal fortgesetzt.

Net::ReadTimeout ist offensichtlich die culrpit, aber warum?

Antwort

2

"Annahme ist die Mutter aller Probleme" - Paraphrasieren einige sehr intelligente Guy oder gal.

Die Antwort war so einfach wie es war albern - ich habe eine node.js Middleware hinzugefügt next(); darin weglassen. Nichts ist falsch mit dem Skript, wie sich herausstellt - ich habe am falschen Ort gesucht und keinen Test dafür gemacht. Hoppla.