什么是目前最舒适,最可靠的跨平台Perl模块进行并行下载?
发布时间:2020-12-16 06:07:48 所属栏目:大数据 来源:网络整理
导读:我将不得不通过简单地在URL上发布并获取 XML作为回报来下载大量数据集.我可以通过一次执行多个请求来加快速度,但这里是钩子: 它需要在Windows和Linux上运行,因此线程和分叉都会出局. (因为这纯粹是IO限制的,所以我认为它们也不需要.) 此外,我的同事并不是非
我将不得不通过简单地在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 / (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |