我将不得不通过简单地在一个 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/