AnyEvent::HTTP 实现异步请求

来源:互联网 发布:淘宝发布宝贝产品规格 编辑:程序博客网 时间:2024/06/06 00:46
异步http:jrhmpt01:/root/async# cat a1.pl use  LWP::UserAgent;use utf8;use DBI;use POSIX;use HTTP::Date qw(time2iso str2time time2iso time2isoz);use Data::Dumper;use HTML::TreeBuilder;  use HTML::TreeBuilder::XPath;my $ua = LWP::UserAgent->new;$ua->timeout(10);$ua->env_proxy;$ua->agent("Mozilla/8.0");#my $response = $ua->get('http://data.10jqka.com.cn/financial/yjyg/date/2016-03-31/board/ALL/field/enddate/order/desc/page/1/ajax/1/');#my $response = $ua->get('http://data.10jqka.com.cn/financial/yjyg/');$time1=time2iso(time());print "\$time1 is $time1\n";my $response = $ua->get('http://120.55.118.6:3000/api/env?ip=192.168.32.101');if ($response->is_success) {print   $response->decoded_content;  # or whatever}else{print   $response->decoded_content; };$time2=time2iso(time());print "\$time2 is $time2\n";print "111111111111111111111111111111111111\n";jrhmpt01:/root/async# jrhmpt01:/root/async# jrhmpt01:/root/async# perl a1.pl $time1 is 2016-04-16 18:25:47500 read timeout$time2 is 2016-04-16 18:25:57111111111111111111111111111111111111堵塞直到超时,此时不能干任何事情,需要异步请求来处理!jrhmpt01:/root/async# cat a3.pl #!/usr/bin/perluse AnyEvent;use AnyEvent::HTTP;my $cv = AnyEvent->condvar;sub doit{    my $url = shift ;    return if not defined $url;    $cv->begin;    http_get( "$url", sub { done( $url, @_ ) } );    print "1111111111111111\n";}sub done {    my ($url, $content, $hdr) = @_;    $cv->end();    print "Search: $url\tStatus: ", $hdr->{Status}, "\n";    print "\$content is $content\n";};&doit('http://120.55.118.6:3000/api/env?ip=192.168.32.101');     print "222222222222222222\n";$cv->recv();jrhmpt01:/root/async# perl a3.pl 1111111111111111222222222222222222Search: http://120.55.118.6:3000/api/env?ip=192.168.32.101Status: 200$content is ["","192.168.32.101  dr-mysql  env-backup"]利用AnyEvent::HTTP 实现异步请求

0 0