Perl newbie here. I have a line of code:
my $api_data = decode_json( $ua->get($url)->res->body );
where $ua = Mojo::UserAgent->new
. On occasion, the request may hang (indefinitely) and I'd like to specify a connection timeout.
The documentation provides an example, but I'm not exactly sure how to incorporate it correctly into my statement.
How should I use connect_timeout
in this case? I understand that Mojo specifies a default connection timeout value (10), but I'd rather specify it explicitly in the code.
The documentation shows that connect_timeout
can be used as both a getter and a setter:
my $timeout = $ua->connect_timeout; # getter
$ua = $ua->connect_timeout(5); # setter
The setter returns the Mojo::UserAgent object it's called on so that it can be chained with other methods.
So you could do:
my $ua = Mojo::UserAgent->new;
my $api_data = decode_json( $ua->connect_timeout(42)->get($url)->res->body );
But you're not required to chain methods, so I would recommend a more readable version:
my $ua = Mojo::UserAgent->new;
$ua->connect_timeout(42);
my $api_data = decode_json( $ua->get($url)->res->body );