perl - 目前进行并行下载最舒适和可靠的跨平台 Perl 模块是什么?

标签 perl cross-platform download parallel-processing

我将不得不通过简单地在一个 url 上发布并获得 XML 作为返回来下载一些数据集。我将能够通过一次执行多个请求来加快这一速度,但这里有一个钩子(Hook):

它需要在 Windows 和 Linux 上运行,所以 线程和 fork 都出来了 . (由于这纯粹是受 IO 限制的,我认为也不需要它们。)

此外,我的同事对 perl 的理解水平不是很高,但需要能够掌握如何使用它(不一定是发生了什么,使用情况很好)。因此,如果它的 我会很高兴API 有点简单 .

现在我在看IO::Lambda为了这。

还有其他建议吗?

验尸:根据 draegtun 的建议,我现在把它放在一起,它完美地完成了这项工作:https://gist.github.com/661386您可能很快就会在 CPAN 上看到它。

最佳答案

看看 AnyEvent::HTTP .根据CPAN testers platform matrix它确实在 Windows 上编译和工作。

下面是一个简单的异步 POST 示例 (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 @_ }

注意。记住你决定用 do_something_with_this 做的任何事情尽量避免任何阻碍。见其他非阻塞 AnyEvent modules

/I3az/

关于perl - 目前进行并行下载最舒适和可靠的跨平台 Perl 模块是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086335/

相关文章:

PHPExcel下载文件,象形文字excel文件

php - 如何将 Javascript 对象传递给 php 以进行 sql 查询并将数据作为下载的 csv 文件返回?

regex - DBI.pm 中的这一行是做什么的?

javascript - 生成的 pdf 中的图像损坏了发送到服务器的 pdf

windows - 如何在 Windows 中为 Visual Studio 项目创建 Debian 安装包?

c - C语言线程,跨平台

java - 如何以编程方式使用 MBR 和 USB 闪存扇区?

perl - 如何一次 `local` 多个数组元素?

c# - 寻求澄清有关弱类型语言的明显矛盾

Java:下载总是停顿