Zajmuję się tworzeniem małej aplikacji, która umieszcza kod XML w niektórych usługach sieciowych. Odbywa się to za pomocą Net :: HTTP :: Post :: Post. Usługodawca zaleca jednak ponowne podłączenie.Implementacja strategii Re-connect przy użyciu sieci Ruby
Coś jak: 1 wniosek nie powiedzie -> spróbować ponownie po 2 sekundach 2-cia żądanie nie powiedzie -> spróbować ponownie po 5 sekundach 3-cie żądanie nie powiedzie -> spróbować ponownie po 10 sekundach ...
Co by być dobrym podejściem do tego? Po prostu uruchamiając poniższy fragment kodu w pętli, przechwytując wyjątek i uruchamiając go ponownie po pewnym czasie? Czy jest jakiś inny sprytny sposób na zrobienie tego? Może pakiet Net ma nawet wbudowaną funkcjonalność, o której nie wiem?
url = URI.parse("http://some.host")
request = Net::HTTP::Post.new(url.path)
request.body = xml
request.content_type = "text/xml"
#run this line in a loop??
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
Dziękuję bardzo, zawsze dziękuję za wsparcie.
Matt
Doskonałe. Dzięki! – Matt
Avdi, jaki jest dobry sposób na sprawdzenie tego? (używając rspec lub jakiegokolwiek) – Mike
Dzięki. Wydaje się, że 'SomeException' musi, niestety, być' StandardError', cf: http://stackoverflow.com/questions/5370697/what-s-the-best-way-to-handle-exceptions-from-nethttp. Nie wspaniale, ale przynajmniej ma zasięg do linii i nie jest połknięty, jeśli jest to przejściowy, rzeczywisty błąd. – chesterbr