Estoy desarrollando una pequeña aplicación que envía mensajes XML a algún servicio web. Esto se hace usando Net :: HTTP :: Post :: Post. Sin embargo, el proveedor de servicios recomienda usar una reconexión.Implementando la estrategia de reconexión usando Ruby Net
Algo así como: primera petición falla -> inténtelo de nuevo después de 2 segundos segunda petición falla -> intentarlo de nuevo después de 5 segundos tercera petición falla -> intentarlo de nuevo después de 10 segundos ...
Qué haría ser un buen enfoque para hacer eso? ¿Simplemente ejecutando la siguiente pieza de código en un bucle, capturando la excepción y volviéndola a ejecutar después de un período de tiempo? ¿O hay alguna otra manera inteligente de hacer eso? ¿Tal vez el paquete Net incluso tiene alguna funcionalidad incorporada de la que no tengo conocimiento?
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)}
Muchas gracias, siempre apreciamos su apoyo.
Matt
excelente. ¡Gracias! – Matt
Avdi, ¿cuál es una buena manera de probar esto? (usando rspec o cualquiera) – Mike
Gracias. Por cierto, parece que 'SomeException' debe ser, lamentablemente, 'StandardError', cf: http://stackoverflow.com/questions/5370697/what-s-the-best-way-to-handle-exceptions-from-nethttp. No es genial, pero al menos tiene un alcance en una línea y no se ingiere si se trata de un error real no transitorio. – chesterbr