Size: a a a

2020 January 18

SS

Supreme Spirit in Modern::Perl
basiliscos
всё равно запускать его заново через нек. время... так пусть висит?
его запускать может придется через 2 дня, может через неделю. в зависимости от нужды
источник

SS

Supreme Spirit in Modern::Perl
в целом, можно и так, на серваке памяти хватит. но (!) как тогда делать выгрузку корректно по окончанию текущих задач
источник

SS

Supreme Spirit in Modern::Perl
или делать конечный таск, который вызовет выгрузку?
источник

IB

Ivan Bessarabov in Modern::Perl
А как при такой ситуации ты собираешься обрабатывать проблему что твой айпишник забанили и нужно ретраить через 24 часа?
источник

b

basiliscos in Modern::Perl
ну сделай спец. джоб: "Finish", когда всё обработаешь, всё закончено, кладёшь такой джоб, он достаётся и само-убивается
источник

b

basiliscos in Modern::Perl
@supremespirit тебе по-ходу нужна очередь с расписанием?
источник

SS

Supreme Spirit in Modern::Perl
Ivan Bessarabov
А как при такой ситуации ты собираешься обрабатывать проблему что твой айпишник забанили и нужно ретраить через 24 часа?
хороший вопрос. вообще я думал, что в момент выполнения задачи проверять на результат whois и помечать ее как success/failure а дальше да, надо через сутки ее перезапустить. но вообще я это собирался делать руками, получив по итогу выполнения статистику и через сутки включить скрипт по ошибочным задачам
источник

IB

Ivan Bessarabov in Modern::Perl
может в базу писать?
timestamp
domain
parsed_ok (1 если whois вернул валидный ответ, 0 если нет)
expire_date (есть только если parsed_ok == 1)
источник

SS

Supreme Spirit in Modern::Perl
Ivan Bessarabov
может в базу писать?
timestamp
domain
parsed_ok (1 если whois вернул валидный ответ, 0 если нет)
expire_date (есть только если parsed_ok == 1)
можно и так, просто если это можно было делать внутри задачи, то почему нет. если нет – то и такой вариант сойдет)
источник

IB

Ivan Bessarabov in Modern::Perl
Кстати, непонятно зачем тебе перл. Если ты знаешь celery, то почему бы не написать на привычном инструменте. Уверен что и в питоне есть библиотеки для парсинга whois ответа
источник

SS

Supreme Spirit in Modern::Perl
Ivan Bessarabov
Кстати, непонятно зачем тебе перл. Если ты знаешь celery, то почему бы не написать на привычном инструменте. Уверен что и в питоне есть библиотеки для парсинга whois ответа
да я не хочу переписывать либу для whois, в том то и дело. эта самая адекватная в плане актуальности
источник

SS

Supreme Spirit in Modern::Perl
поэтому и хочу реализовать парсер уже здесь, чтобы не морочить голову с либой
источник

IB

Ivan Bessarabov in Modern::Perl
ну, смотри сам, конечно
источник

IB

Ivan Bessarabov in Modern::Perl
но если бы я жил в мире питона, то я бы, наверное, взял https://pypi.org/project/whois/ и решал бы задачу с помощь этой штуки
источник

SS

Supreme Spirit in Modern::Perl
Ivan Bessarabov
но если бы я жил в мире питона, то я бы, наверное, взял https://pypi.org/project/whois/ и решал бы задачу с помощь этой штуки
able to extract data for all the popular TLDs (com, org, net, biz, info, pl, jp, uk, nz,  ...)
как бы вот ответ, перловая либа охватывает гораздо больший пул
источник

IB

Ivan Bessarabov in Modern::Perl
Кстати, вот пример скрипта с minion, который завершает работу когда задач не осталось
#!/usr/bin/perl

use strict;
use warnings FATAL => 'all';
use feature 'say';
use utf8;
use open qw(:std :utf8);

use Minion;
use Data::Dumper;

my $main_pid = $$;

warn $main_pid;

my $minion = Minion->new(
 SQLite => 'sqlite:/tmp/minion.db',
);

$minion->add_task(square => sub {
 my ($job, $number) = @_;

 warn "working with $number";

 my $result = $number * $number;

 if ( $job->minion()->stats()->{inactive_jobs} == 0 ) {
   warn "All done\n";
   kill '-KILL', $main_pid;
 }

 return 1;
});

foreach my $i (1..20) {
 $minion->enqueue(square => [$i]);
}

my $worker = $minion->worker;
$worker->status->{jobs} = 2;
$worker->run;
источник

IB

Ivan Bessarabov in Modern::Perl
(но, не уверен что нужно так делать)
источник

МИ

Михаил Иванов in Modern::Perl
Какая ирония. Я наоборот пытаюсь научиться засылать задачи из перла в питоновский Селери:)
источник

SS

Supreme Spirit in Modern::Perl
Михаил Иванов
Какая ирония. Я наоборот пытаюсь научиться засылать задачи из перла в питоновский Селери:)
а что послужило стимулом для этого?
источник

AK

Andrey Konovalov in Modern::Perl
Ivan Bessarabov
Кстати, вот пример скрипта с minion, который завершает работу когда задач не осталось
#!/usr/bin/perl

use strict;
use warnings FATAL => 'all';
use feature 'say';
use utf8;
use open qw(:std :utf8);

use Minion;
use Data::Dumper;

my $main_pid = $$;

warn $main_pid;

my $minion = Minion->new(
 SQLite => 'sqlite:/tmp/minion.db',
);

$minion->add_task(square => sub {
 my ($job, $number) = @_;

 warn "working with $number";

 my $result = $number * $number;

 if ( $job->minion()->stats()->{inactive_jobs} == 0 ) {
   warn "All done\n";
   kill '-KILL', $main_pid;
 }

 return 1;
});

foreach my $i (1..20) {
 $minion->enqueue(square => [$i]);
}

my $worker = $minion->worker;
$worker->status->{jobs} = 2;
$worker->run;
делать kill -KILL - весьма фиговая практика. -TERM всё же сильно предпочтительнее :)
источник