proxyhunter
view release on metacpan or search on metacpan
lib/App/ProxyHunter.pm view on Meta::CPAN
}
Proc::Daemon::Init({
work_dir => '.',
length($daemon)>0 ? (pid_file => $daemon) : ()
});
}
$model->update('proxy', {in_progress => 0}); # clean
my @coros;
if ($config->checker->enabled) {
push @coros, $class->_start_checkers($config, $model);
}
if ($config->rechecker->enabled) {
push @coros, $class->_start_recheckers($config, $model);
}
if ($config->speed_checker->enabled) {
push @coros, $class->_start_speed_checkers($config, $model);
}
if ($config->searcher->enabled) {
push @coros, $class->_start_searcher($config, $model);
}
$_->join() for @coros;
}
sub _start_checkers {
my ($class, $config, $model) = @_;
my @coros;
my @queue;
my $delay;
for (1..$config->checker->workers) {
push @coros, async {
my $type_checker = Net::Proxy::Type->new(
strict => $config->checker->strict,
noauth => 1,
url => $config->checker->http_url,
keyword => $config->checker->http_keyword,
https_url => $config->checker->https_url,
https_keyword => $config->checker->https_keyword,
);
$type_checker->http_strict(1);
my $speed_checker = $config->checker->speed_check ?
lib/App/ProxyHunter.pm view on Meta::CPAN
$proxy->set('checked', 1);
$proxy->set('checkdate', DateTime->now(time_zone => TZ));
$proxy->set('in_progress', \0); # force update
$proxy->set('success_total', 1);
$proxy->update();
}
}
}
return @coros;
}
sub _start_recheckers {
my ($class, $config, $model) = @_;
my @coros;
my @queue;
my $delay;
for (1..$config->rechecker->workers) {
push @coros, async {
my $type_checker = Net::Proxy::Type->new(
strict => $config->rechecker->strict,
noauth => 1,
url => $config->checker->http_url,
keyword => $config->checker->http_keyword,
https_url => $config->checker->https_url,
https_keyword => $config->checker->https_keyword,
);
$type_checker->http_strict(1);
my $speed_checker = $config->rechecker->speed_check ?
lib/App/ProxyHunter.pm view on Meta::CPAN
$proxy->set('success_total', $proxy->success_total+1);
}
$proxy->set('checkdate', DateTime->now(time_zone => TZ));
$proxy->set('in_progress', \0); # force update
$proxy->update();
}
}
}
return @coros;
}
sub _start_speed_checkers {
my ($class, $config, $model) = @_;
my @coros;
my @queue;
my $delay;
for (1..$config->speed_checker->workers) {
push @coros, async {
my $speed_checker = LWP::UserAgent->new(agent => 'Mozilla 5.0', timeout => 10, parse_head => 0);
while (1) {
if ($delay) {
Coro::Timer::sleep $delay;
next;
}
unless (@queue) {
unless (@queue = $class->_get_queue(
( run in 0.334 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )