试图处理100个URL请求.我应该使用perl cpan http :: async吗?Mojo



我正在尝试创建一个可以一次连接到100个URL的程序,并取决于每个连接的输出(即,在HTTP Connect上的成功),然后是Perl脚本将转到功能X,或者不进行。我能想到的最好的是这个脚本。但是我希望它可以同时连接到100个URL,或并行,每个URL返回一个响应(因此我应该在LWP超时的结尾处获得100个左右的响应),以弄清楚下一步要做什么。但是,我见过的大多数示例都倾向于做一个URL。它可能会贯穿20-30个,但是如果一个人倒下,那就是减速的开始。

use Mojo::Client;
use Mojo::Transaction;
my $client = Mojo::Client->new;
my $tx  = Mojo::Transaction->new_get('http://labs.kraih.com');
my $tx2 = Mojo::Transaction->new_get('http://mojolicious.org');
$tx2->req->headers->expect('100-continue');
$tx2->req->body('foo bar baz');
$client->process_all($tx, $tx2);
print $tx->res->code;
print $tx2->res->code;
print $tx2->res->content->file->slurp;

但是,它为每个事务创建变量。如果我要去100个网站,创建$ TX1- $ TX 100会很痛苦。

预先感谢。

这是我的基本建议:为每个URL创建一个过程,并让该过程独立于另一个URL处理。请注意,如果您需要登录,所有进程都可以在文件上共享一个句柄。

#!/usr/bin/perl
use strict;use warnings;
my @url = ('url1','url2','url3');
my $pid;
my $url_to_process;
foreach my $url (@url) {
    $pid = fork; #create new process.
    unless ($pid) {
        $url_to_process = $url;
        last;
    } #end loop if we are a child
}
unless ($pid) {
    print "$$: $url_to_processn"; # or do anything you like with the url
}

相关内容

  • 没有找到相关文章

最新更新