4

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

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

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

文档提供了一个示例,但我不确定如何将其正确地合并到我的声明中。

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

4

1 回答 1

4

文档显示可以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 );
于 2016-03-30T16:46:07.187 回答