2017-04-26 1 views
0

Je reçois l'erreur de réponse du serveur suivant tout en essayant de gratter les résultats SERP:échapper Mechinze Erreur dans Ruby Grattage

/Users/*********/.rvm/gems/ruby-2.3.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:323:in `fetch': 503 => Net::HTTPServiceUnavailable for http://******.*****.com/sorry/index?continue=http://www.********.com/search%3Fq%3D<term1>%2B<term2> -- unhandled response (Mechanize::ResponseCodeError) 

J'essaie de comprendre comment échapper à l'erreur/exception, de sorte que le programme continuer à fonctionner au lieu de quitter automatiquement.

+0

Veuillez lire "[ask]", y compris les pages liées, "[mcve]" et "[Quel effort de recherche est attendu des utilisateurs de Stack Overflow?] (Http://meta.stackoverflow.com/questions/261592) ". Nous aimerions voir des preuves de vos efforts. Qu'avez-vous essayé? Avez-vous cherché et trouvé rien? Avez-vous trouvé des trucs mais ça n'a pas aidé? Avez-vous essayé d'écrire du code? Si non, pourquoi? Si oui, quel est le plus petit exemple de code qui montre ce que vous avez essayé et pourquoi cela n'a pas fonctionné? Sans cela, on dirait que vous n'avez pas essayé et que vous voulez que nous l'écrivions pour vous. –

+0

Point pris, lisez les documents suggérés. Vise à intégrer ces principes dans les questions suivantes. – HMLDude

Répondre

2

Comme quoi que ce soit dans Ruby, il se résume probablement vers le bas pour rescue et récupérer:

loop do 
    begin 
    Mechanize.do_stuff! 

    # Success! 
    break 

    rescue Mechanize::ResponseCodeError 
    # Server-side failure, so let's try again after a quick break 
    sleep(10) 
    end 
end 

Notez le sleep(10) est là pour éviter claquant furieusement le serveur et rendant un mauvais fonctionnement encore plus difficile.

+0

Pourquoi l'instruction break est-elle requise? – HMLDude

+0

Je présume que vous ne voulez pas aller chercher la même page encore et encore, pour toujours. – tadman