Coro::LWP::UserAgent::timeout
use Coro::LWP; すると $ua->timeout が効かなくなるのでpatch
package Coro::LWP::UserAgent::timeout; use strict; use warnings; use Coro; use Coro::LWP; use Coro::Timer; use LWP::UserAgent; use ;; use HTTP::Response (); use HTTP::Status (); { no strict 'refs'; no warnings 'redefine'; my $original_send_request = *{'LWP::UserAgent::send_request'}{CODE}; *{'LWP::UserAgent::send_request'} = sub { my $self = shift; my $ua_thread; my $response = HTTP::Response->new(HTTP::Status::HTTP_REQUEST_TIMEOUT, "timeout"); $ua_thread = async { my $to_h = AE::timer( $self->{timeout}, 0, sub { $ua_thread->cancel(""); }) if($self->{timeout}); $response = $self->$original_send_request(@_); } @_; $ua_thread->join; $response; }; }; 1;
created by https://id.mixi.jp/hanabokuro
コメント
コメントはありません
コメントを投稿
コメントを投稿するにはログインが必要です