加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

什么是目前最舒适,最可靠的跨平台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 /

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读