我将不得不通过简单地在URL上发布并获取
XML作为回报来下载大量数据集.我可以通过一次执行多个请求来加快速度,但这里是钩子:
它需要在Windows和Linux上运行,因此线程和分叉都会出局. (因为这纯粹是IO限制的,所以我认为它们也不需要.)
此外,我的同事并不是非常高级的perl理解,但需要能够掌握如何使用它(不一定是正在发生的事情,使用情况很好).因此,如果它的API有点简单,我会很高兴.
现在我正在寻找IO::Lambda.
还有其他建议吗?
Post-Mortem:根据draegtun的建议,我现在把它拼凑在一起,完美地完成了这项工作:https://gist.github.com/661386你很快就会在CPAN上看到它.
解决方法
看看
AnyEvent::HTTP
.根据
CPAN testers platform matrix它确实编译和&在Windows上工作.
下面是异步POSTing(http_post)的简单示例.
use 5.012; use warnings; use AnyEvent::HTTP; my $cv = AnyEvent->condvar; my @urls = ( [google => 'http://google.com','some body'],[yahoo => 'http://yahoo.com','any body' ],); for my $site (@urls) { my ($name,$url,$body) = @$site; $cv->begin; http_post $url,$body => sub { my $xml = shift; do_something_with_this( $name,$xml ); $cv->end; } } # wait till all finished $cv->recv; say "Finished"; sub do_something_with_this { say @_ }
NB.记住你用do_something_with_t所做的决定,试着避免任何阻塞.见其他非阻塞AnyEvent modules
/ I3az /