Perl HTTP Tiny + Socket Socks Wrapper หมดเวลาไม่ทำงาน

ฉันใช้ HTTP::Tiny + IO::Socket ::Socks::Wrapper เพื่อส่งคำขอ HTTP ผ่าน SOCKS Proxy ทุกอย่างทำงานได้ดียกเว้นตัวเลือกการหมดเวลา เมื่อใช้เฉพาะ IO::Socket::Socks ที่ไม่มี HTTP::การหมดเวลาเพียงเล็กน้อยก็ใช้งานได้

ตัวอย่างที่ไม่มี HTTP::Tiny และไม่มีพร็อกซีที่ไม่มีอยู่เพื่อทริกเกอร์การหมดเวลา:

my $t = time;
my $sock = IO::Socket::Socks->new(
    ProxyAddr => '4.5.6.7', 
    ProxyPort => 1080, 
    ConnectAddr => 'www.google.com', 
    ConnectPort => 80, 
    Timeout => 3
) or print "connection failed or timed out\n";

print "time: " . (time - $t) . "\n";

เอาท์พุท:

connection failed or timed out
time: 3.00517201423645

ตัวอย่างด้วย HTTP::Tiny:

my $t = time;
my $http = wrap_connection(
    HTTP::Tiny->new(timeout => 3), {
        ProxyAddr => '4.5.6.7', 
        ProxyPort => 1080, 
        Timeout => 3
    }
);
my $r = $http->get("http://www.google.com");
print "connection failed or timed out\n" unless $r->{success};
print "time: " . (time - $t) . "\n";

เอาท์พุท:

connection failed or timed out
time: 21.0282030105591

เหตุใดตัวอย่างที่สองจึงไม่หมดเวลาหลังจาก 3 วินาที


person knv17    schedule 23.11.2013    source แหล่งที่มา


คำตอบ (1)


มันเป็นข้อผิดพลาด ซึ่งตอนนี้ดูเหมือนว่าจะได้รับการแก้ไขแล้ว เวอร์ชันใหม่จะถูกอัปโหลดไปยัง CPAN เร็วๆ นี้ และตอนนี้คุณสามารถรับเวอร์ชันคงที่ได้จาก github repo

person Oleg G    schedule 11.12.2013