in reply to Re: Timeout for connect in Anyevent::HTTP. Help, please.
in thread Timeout for connect in Anyevent::HTTP. Help, please.

About a simple timeout all clear (Documentation: "timeout => $seconds The time-out to use for various stages - each connect attempt will reset the timeout, as will read or write activity, ie this is not an overall timeout." ) But how to set overall timeout, which does not reset?
  • Comment on Re^2: Timeout for connect in Anyevent::HTTP. Help, please.

Replies are listed 'Best First'.
Re^3: Timeout for connect in Anyevent::HTTP. Help, please.
by Tanktalus (Canon) on Oct 11, 2013 at 15:26 UTC

    Without testing anything:

    my $w; my $cv = http_request GET => $url, ..., sub { $w = undef; callback(... +) }; # kill the watcher when we're done $w = AE::timer $timeout, 0, sub { $cv = undef }; # kill the http requ +est after $timeout seconds
    However, that may not work depending on what else you're doing - if you're waiting on $cv->recv, you may want to use $cv->send() if $cv inside the timer callback to trigger that.

    Basically, start the request, then start the timer, then wait, and when the http request returns, clear the $cv variable and/or clear $w to terminate the timer. There are a few things to pay attention to here, to clear cv's and watchers at the appropriate time, but it should otherwise be straight forward.