Forum: Ruby How to retry a disrupted Net::HTTP download?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3748b9b255fe63df00f64bea7246efad?d=identicon&s=25 Chris Colon (chriscolon)
on 2007-06-04 13:37
Hi,
I'm trying to download a file with Ruby from a website. Everything works
fine, but I can't get Ruby to retry the download when for example the
internet connection breaks during the download.

Here's my code so far (it's easier to read in a pastie):
http://pastie.caboo.se/67574

The Timeout::Error exception never happens, even though it should time
out after 5 seconds. The funny thing is, if I deactivate my internet and
then reconnect it, it does continue the download of the file, even
though the commands under "rescue Timeout::Error" aren't executed.

I hope someone can help me, I googled for an hour and tried tons of
different things that I found in the API docs, but I'm pretty stuck
right now.
3748b9b255fe63df00f64bea7246efad?d=identicon&s=25 Chris Colon (chriscolon)
on 2007-06-05 11:39
Okay I found it out by myself, here's the working code if someone else
ever wants to do this:
http://pastie.caboo.se/67910

The problem was that Ruby already uses a timeout for the Net::HTTP class
and because of this, you can't wrap another timeout around it. But you
can set the timeout Ruby uses with http.read_timeout and
http.open_timeout. This way I was able to handle the Timeout::Error and
now everything works just fine.

Chris Colon wrote:
> Hi,
> I'm trying to download a file with Ruby from a website. Everything works
> fine, but I can't get Ruby to retry the download when for example the
> internet connection breaks during the download.
>
> Here's my code so far (it's easier to read in a pastie):
> http://pastie.caboo.se/67574
>
> The Timeout::Error exception never happens, even though it should time
> out after 5 seconds. The funny thing is, if I deactivate my internet and
> then reconnect it, it does continue the download of the file, even
> though the commands under "rescue Timeout::Error" aren't executed.
>
> I hope someone can help me, I googled for an hour and tried tons of
> different things that I found in the API docs, but I'm pretty stuck
> right now.
This topic is locked and can not be replied to.