Hey Ben
I'm glad it worked for you too, and thanks for the compliment. I was
happy to just get rid of those untrappable errors, so I didn't even
profile to see whether there were any other speed improvements -
performance is not a critical issue in my script.
Cheers,
M
Ben Brightwell wrote:
> Interesting results!!! What an understatement!! How on earth did you
> figure that out? It worked like a charm. Initially my problem was just
> that the HTTP request took FOREVER... then i started randomly getting
> the timeout errors mentioned above. I went into the net/protocol.rb file
> and made this change and voila!. Not only did the errors go away, but
> the request takes literally 1/30th of the time it did before it
> eventually got the data or even timed out.. Marcin Coles, you are the
> genius of the day! Thank you!
>
> Marcin Coles wrote:
>> Well, I'm no expert, and I certainly wasn't going to learn another
>> language, so I decided to do some tests because this was a problem for
>> me too.
>>
>> I went into protocol.rb, to the rbuf_fill method (where it actually
>> starts the timeout thread).
>>
>> the code there was
>>
>> def rbuf_fill
>> timeout(@read_timeout) {
>> @rbuf << @io.sysread(1024)
>> }
>> end
>>
>> now timeout takes 2 parameters - a time in seconds(?) and an exception
>> class to raise (defaults to Error).
>>
>> When I changed the code to the following, it started to work for me.
>> New code:
>>
>> def rbuf_fill
>> timeout(@read_timeout,ProtocolError) {
>> @rbuf << @io.sysread(1024)
>> }
>> end
>>
>> Obviously this is not exactly extensively tested - but an interesting
>> results.
>>
>> Marcin
--
Posted via http://www.ruby-forum.com/.