Net::HTTP Timeout

T

thefed

Yes, I have read the previous thread (http://www.ruby-forum.com/topic/
105212), but I have one small question:

Would it be so terribly bad to change it from:

? Would the uncapturable thread cause me a problem? Timeout runs it
in another thread anyways, so this is just removing the timeout aspect.

-------------------------------------------------------|
~ Ari
seydar: it's like a crazy love triangle of Kernel commands and C code
 
B

Bryan Duxbury

This is a terrible idea. Starting in another thread causes rbuf_fill
to return immediately instead of waiting to fill the buffer. The use
of timeout causes it to wait a while trying, and then abort if it
fails. Using a thread without a timeout will completely monkey with
things.

Is there some reason as to why you want to do this? What are you
trying to accomplish?

-Bryan
 
T

thefed

This is a terrible idea. Starting in another thread causes
rbuf_fill to return immediately instead of waiting to fill the
buffer. The use of timeout causes it to wait a while trying, and
then abort if it fails. Using a thread without a timeout will
completely monkey with things.

Is there some reason as to why you want to do this? What are you
trying to accomplish?

When I'm using ruby to download large files, everynow and then the
server doesn't respond for over 60 seconds, and my program crashes
with a timeout error.
 
B

Ben Giddings

When I'm using ruby to download large files, everynow and then the
server doesn't respond for over 60 seconds, and my program crashes
with a timeout error.

It seems to me that your program, or whatever is using Net::HTTP should
handle the timeout better, rather than crashing. You can always wrap
the call in something that rescues the timeout error and retries
(perhaps after printing out a warning), or you could ask the user what
to do. Not timing out at all isn't the best approach.

Ben
 
B

Brian Durand

Ben said:
It seems to me that your program, or whatever is using Net::HTTP should
handle the timeout better, rather than crashing. You can always wrap
the call in something that rescues the timeout error and retries
(perhaps after printing out a warning), or you could ask the user what
to do. Not timing out at all isn't the best approach.

Ben

The crash is caused by the default behavior of timeouts (which is what
Net::HTTP uses). By default timeouts throw an InterruptException which
kills the current thread. You can get a simple fix for this with the
http_configuration gem/plugin
(http://agilewebdevelopment.com/plugins/http_configuration).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top