如何使用Mojo :: UserAgent的connect_timeout

时间:2016-03-29 22:25:51

标签: perl mojolicious mojo-useragent

Perl新手在这里。我有一行代码:

my $api_data = decode_json( $ua->get($url)->res->body );

其中$ua = Mojo::UserAgent->new。有时,请求可能会挂起(无限期),并且我想指定连接超时。

documentation提供了一个示例,但我并不完全确定如何将其正确地合并到我的陈述中。

在这种情况下我应该如何使用connect_timeout?我知道Mojo指定了默认的连接超时值(10),但我宁愿在代码中明确指定它。

1 个答案:

答案 0 :(得分:3)

documentation表明connect_timeout可以同时用作getter和setter:

my $timeout = $ua->connect_timeout;    # getter
$ua         = $ua->connect_timeout(5); # setter

setter返回它调用的Mojo :: UserAgent对象,以便它可以与其他方法链接。

所以你可以做:

my $ua = Mojo::UserAgent->new;

my $api_data = decode_json( $ua->connect_timeout(42)->get($url)->res->body );

但是您不需要链接方法,因此我建议使用更易读的版本:

my $ua = Mojo::UserAgent->new;
$ua->connect_timeout(42);

my $api_data = decode_json( $ua->get($url)->res->body );