【问题标题】:How to handle timeout with Perl module HTTP::Async?如何使用 Perl 模块 HTTP::Async 处理超时?
【发布时间】:2012-03-21 00:04:01
【问题描述】:

我知道在使用LWP::UserAgent 时如何处理HTTP::Request 上的timeout 操作,但由于我需要使用HTTP::Async 模块而不是Perl 模块LWP::UserAgent,我正在寻找替代解决方案(s ) 为异步 http 请求设置超时。

【问题讨论】:

    标签: perl http asynchronous timeout


    【解决方案1】:

    读过documentation吗?

    设置请求的默认超时时间:

    # When creating the object:
    my $async = HTTP::Async->new( timeout => 300 ); # 5 minutes
    # Changing it later:
    $async->timeout(600); # 10 minutes
    

    更改单个请求的超时时间:

    $async->add_with_opts( $request, { timeout => 600 } ); # 10 minutes
    

    更新:似乎有a bugtimeout 属性实际上不起作用。

    【讨论】:

    • 必须是一个正整数超时,或者 Time::HiRes 也可以是任何正十进制数?
    • HTTP::Async 使用 Time::HiRes,因此它应该使用小数秒。不过,我不确定您为什么需要以亚秒级精度设置超时。
    • 我在网上找到的大多数示例都将它们的 timeout 设置为 max_request_time 选项,根本没有使用 timeout 选项。为什么?那么timeout option 是干什么用的?我不知道为什么会有两个设置:max_request_timetimeout
    • 文档无法解释这一点,但是从查看源代码来看,如果在发送请求后 timeout 秒或 max_request_time 秒内没有收到任何数据,则请求中止,以先到者为准.即,timeout 每次收到数据时都会重置,但max_request_time 不会。
    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2017-08-18
    • 2011-12-17
    • 2011-09-20
    相关资源
    最近更新 更多