Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> lwp завершить соединение по таймауту 
:(
    Опции темы
burakov
Дата 11.12.2013, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Добрый день.

необходимо прервать соединение LWP по таймауту.

родной 
$lwp -> timeout ($timeout);

это для того, чтобы не останавливаться, когда ждешь ответа сервера ..

но бывают ситуации, когда ответ есть, но очень медленный.
такие ответы нужно прерывать по таймауту
есть ли в LWP такая опция?

попробовал использовать в своем многопоточном грабере 

конструкцию вида

            my $response = undef;
            eval {
                local $SIG{ALRM} = sub { die "timeout"; };
                alarm ($timeout);
                UNSAFE_SIGNALS {                
                    $response = $lwp -> request ($req);
                };
                if (defined $response -> code) {
                    print $response -> code ."\t". scalar (@threads). "\t" .$url. "\n";
                } 
                alarm (0);
            };


но в виндоус она не работает.
в линукс работает, но 
eval обрывает все потоки и останавливает грабер
вообщем вообще работает некорректно
многопоточная работа основана на 

use threads;
use threads::shared;
use Thread::Queue;


подскажите как быть 
кто где и как (многопоточно) реализовывал  обрыв соединения по таймауту??

большое спасибо




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 11.12.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(burakov @  11.12.2013,  14:40 Найти цитируемый пост)
но бывают ситуации, когда ответ есть, но очень медленный.

эээ... имеешь ввиду узкий канал??


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
burakov
Дата 11.12.2013, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



совершенно верно. 
бывает канал сам по себе узкий. а бывает его преднамеренно сужают... smile.
но мне нужно просто оборвать в таком случае выполнение запроса и продолжить дальше.


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 11.12.2013, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(burakov @  11.12.2013,  14:40 Найти цитируемый пост)
многопоточная работа основана на 

use threads;
use threads::shared;
use Thread::Queue;


а ежели через fork попробовать?


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
burakov
Дата 11.12.2013, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



ну можно попробовать через fork, 
можно через wget на крайний случай.

хотелось волшебное решение через LWP, чтобы двиг не переписывать. (тем более все должно и на винде работать, а форки в винде по моему еще хуже чем threads)


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 11.12.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



burakov, ну выложи более подробный код, а то по кускам все ж не до конца понятно, где и что можно изменить.

Цитата(burakov @  11.12.2013,  15:53 Найти цитируемый пост)
хотелось волшебное решение через LWP


Цитата(burakov @  11.12.2013,  14:40 Найти цитируемый пост)
родной 
$lwp -> timeout ($timeout);


Добавлено через 40 секунд
Цитата(burakov @  11.12.2013,  15:53 Найти цитируемый пост)
тем более все должно и на винде работать, а форки в винде по моему еще хуже чем threads

для граббера сойдет


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
krypt3r
Дата 12.12.2013, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



Может поможет
Код

# Create thread with a task that may time out
my $thr->create(sub {
    threads->yield();
    eval {
        $SIG{ALRM} = sub { die("Timeout\n"); };
        alarm(10);
        ... # Do work here
        alarm(0);
    };
    if ($@ =~ /Timeout/) {
        warn("Task in thread timed out\n");
    }
};
# Set signal handler to relay SIGALRM to thread
$SIG{ALRM} = sub { $thr->kill('ALRM') };
... # Main thread continues working

PM MAIL   Вверх
vadiml
Дата 12.12.2013, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: нет
Всего: 7



Если у Вас коннект по https, то в LWP есть с timeout-ом баг
http://stackoverflow.com/questions/9400068...useragent-https

Т.е. надо писать timeout => 5, Timeout => 5



PM MAIL Jabber   Вверх
Pfailed
Дата 12.12.2013, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 2
Всего: 39



Цитата(vadiml @  12.12.2013,  14:52 Найти цитируемый пост)
Если у Вас коннект по https, то в LWP есть с timeout-ом баг

Его же пофиксили давно, там даже написано.

А что касается LWP, то вся соль здесь https://metacpan.org/source/GAAS/libwww-per...ol/http.pm#L128
Соответственно для реализациии dead line таймаута потребуется либо реализовать свой имплементор для http и https схемы, унаследовавшись от LWP::Protocol::http и LWP::Protoco::https сответственно и переопределив метод request. Либо переопределить LWP::Protocol::http::request напрямую monkey патчингом.


--------------------
PM MAIL   Вверх
ginnie
Дата 12.12.2013, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



В обсуждении на stackoverflow.com посоветовали LWPx::ParanoidAgent, в нем реализован общий timeout().


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Pfailed
Дата 12.12.2013, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 2
Всего: 39



ginnie, он там реализован как раз с помощью SIGALRM

Я тут придумал как это можно сделать дёшево и сердито. Делаем tied handle, который при каждом read/write проверяет а не наступил ли таймаут (прошло больше времени, чем задано). Если прошло возвращает ошибку. Далее нужно связать с этим умным handl'ом сокет, который создаёт LWP. Это можно легко сделать подменив IO::Socket::INET::new на наш со связыванием (локализовав эту подмену внутри функции, где LWP создаёт сокет).
Далее тестовый скрипт, показавший, что это более менее работает. При установленном таймауте 3 секунды проходит 4. А на простом LWP все 10 (собственно столько создаваемый сервер и отдаёт контент). На винде тоже работает.

Код

use strict;

package Tie::Handle::WithTimeout;

use Errno;
use IO::Handle;
use parent 'Tie::Handle';

sub TIEHANDLE {
    my ($class, %opts) = @_;
    
    $opts{start} = time();
    $opts{fh} = IO::Handle->new_from_fd($opts{fh}, '+<');
    bless \%opts, $class;
}

sub READ {
    my $self = shift;
    
    if (time() - $self->{start} > $self->{timeout}) {
        $! = Errno::ETIMEDOUT;
        return undef;
    }
    
    sysread($self->{fh}, $_[0], $_[1], $_[2]);
}

sub WRITE {
    my $self = shift;
    
    if (time() - $self->{start} > $self->{timeout}) {
        $! = Errno::ETIMEDOUT;
        return undef;
    }
    
    syswrite($self->{fh}, $_[0], $_[1], $_[2]);
}

sub FILENO {
    fileno $_[0]->{fh};
}

package main;

use LWP::UserAgent;
use LWP::Protocol::http;

use constant TIMEOUT => 3;

my $lwp_protocol_http_new_socket = \&LWP::Protocol::http::_new_socket;
my $io_socket_inet_new = \&IO::Socket::INET::new;

*LWP::Protocol::http::_new_socket = sub {
    local *IO::Socket::INET::new = sub {
        my $sock = $io_socket_inet_new->(@_);
        if ($sock) {
            tie *$sock, Tie::Handle::WithTimeout::, fh => $sock, timeout => TIMEOUT;
        }
        
        return $sock;
    };
    
    $lwp_protocol_http_new_socket->(@_);
};

# test it

my ($server, $host, $port) = make_slow_http_server();
my $start = time;

my $ua = LWP::UserAgent->new(timeout => TIMEOUT);
print $ua->get("http://$host:$port/")->as_string();

my $elapsed = time - $start;
warn "TOTAL ELAPSED: ", $elapsed;

$server->kill(15);

sub make_slow_http_server {
    use threads;
    
    my $serv = IO::Socket::INET->new(Listen => 3)
        or die $@;
    
    my $thread = threads->create(sub {
        $SIG{TERM} = sub { threads->exit() };
        
        while (1) {
            my $client = $serv->accept()
                or next;
            
            my $buf;
            while (1) {
                $client->sysread($buf, 1024, length $buf)
                    or last;
                if (rindex($buf, "\015\012\015\012") != -1) {
                    last;
                }
            }
            
            $client->syswrite(
                join(
                    "\015\012",
                    "HTTP/1.1 200 OK",
                    "Connection: close",
                    "Content-Type: text/html",
                    "\015\012"
                )
            );
            
            for (1..10) {
                $client->syswrite(rand);
                sleep 1;
            }
            
            $client->close();
        }
        
    });
    $thread->detach();
    
    return ($thread, $serv->sockhost eq "0.0.0.0" ? "127.0.0.1" : $serv->sockhost, $serv->sockport);
}


Добавлено через 3 минуты и 41 секунду
ginnie, прошу прощенья. Перепутал с LWP::UserAgent::Paranoid


--------------------
PM MAIL   Вверх
Pfailed
Дата 12.12.2013, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 2
Всего: 39



Да, на моём тесте LWPx::ParanoidAgent выдал ровно 3 отведённые ему секунды. Можно рекомендовать к использованию.


--------------------
PM MAIL   Вверх
burakov
Дата 17.12.2013, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



посоветовали еще WGET

--connect-timeout=СЕК     установка тайм-аута подключения в СЕК.
 --read-timeout=СЕК        установка тайм-аута чтения в СЕК.



попробовал

Код

my $system = $wget .
'  --no-verbose --server-response --quota="1000000"'.
' --connect-timeout="'.$read_inifile -> {connect_timeout}.'"'.
' --read-timeout="'.$read_inifile -> {read_timeout}.'"'.
' --user-agent="'.$useragent.'"'.
' --output-document="'. $file .'" '.
$url;



но коннект не обрывает. а это вроде все таймауты, которые у него есть. просто по идее грабер должен кроссплатформенно виндоус, линукс работать..
а под виндоусом alarm не особо на многопотоке.

как то можно оборвать по таймауту wget соединение?


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 17.12.2013, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(burakov @  17.12.2013,  16:45 Найти цитируемый пост)
как то можно оборвать по таймауту wget соединение? 

ну там еще и dns-timeout был(что-то вроде этого), хотя это наверно зависит еще и от самой оси, у меня на убунту по крайней мере что-то такое есть. В других не знаю.

Но на тему wget тогда у меня вопрос - разве его винда поддерживает?


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
burakov
Дата 17.12.2013, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



ну есть сборка win32, а как же.
но че то не работает обрыв (по крайней мере видно это не те таймауты)
пришлось даже админа знакомого упросить смоделировать на линуксе ситуацию на моем ай пи.
wget не обрывает, хотя было бы удобно его как клиента получающего контент использовать


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 18.12.2013, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



burakov,  что-то больно сложный велосипед у тебя получается. Чем тебе не нравится предложенный мною ранее способ - fork? Создаешь дочерние процессы и вешаешь тот же аларм на весь дочерний процесс, если висит слишком долго - помрет без каких-либо последствий для родительского процесса. Да и под винду такой фокус должен сработать.  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
burakov
Дата 18.12.2013, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



УРА!!
LWPx::ParanoidAgent

работает даже под виндой и в многопоточном режиме !!
супер !!!

то что мне нужно, чтобы особо не заморачиваться с сигналами.
не понимаю почему такая нужная вещь не реализована сразу в LWP и бем более нет ее в WGET!

огромное спасибо!


p.s. сразу не заметил 2ю страницу ответов.

*про fork *
ну я ж не против нужно пробовать.
на данный момент просто был собран движок многопоточно на threadth + lwp
 2к строк коду. в которых я уже сам понять не могу что к чему.
и нужно было быстрое решение (ибо сдавать уже вчера все это дело). подменил LWP на LWPx::ParanoidAgent
и все заработало как нужно. это просто супер.

ну форки. попробую конечно , но это уже будет другой двиг., другое решение и другое потраченное время.

Это сообщение отредактировал(а) burakov - 18.12.2013, 14:26


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
burakov
Дата 19.12.2013, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Люди!
 а вот под линукс он не лезет
пробую perl -MCPAN -e shell
install LWPx::ParanoidAgent

не ставиться , потому что не может установиться пакет
Net::SSL

ставлю на дебиан 6,0

подскажите, что делать?
как установить его?




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 19.12.2013, 14:38 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(burakov @  19.12.2013,  14:16 Найти цитируемый пост)
подскажите, что делать?


Цитата(Bulat @  18.12.2013,  08:05 Найти цитируемый пост)
что-то больно сложный велосипед у тебя получается.

 smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
burakov
Дата 19.12.2013, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



модули засадил вот так

apt-get install libnet-ssleay-perl
apt-get install libcrypt-ssleay-perl
apt-get install liblwpx-paranoidagent-perl

но ... хотя парсер заработал без ошибок сама функция таймауа не работает. 

под виндоусом главное все ок.
а под линуксом нет.




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Pfailed
Дата 19.12.2013, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 2
Всего: 39



обнови через cpan до последней версии. И Debian заодно, 6 уже не актуальна


--------------------
PM MAIL   Вверх
burakov
Дата 20.12.2013, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



>>обнови через cpan до последней версии.

Net::SSL у меня не ставится через CPAN. make NO
дальше ума не хватает. из за этого ничего не работает.
в принципе я поставил то же самое, только в пакетах.

дебиан 6,0 у меня на вдс . там другого не дают.

вышел из положения при помощи wget.
все таки комплекс его таймаутов обрывает по времени коннект.. это очень хорошо.

Код

my $system = $wget .
    ' --timeout="'.$read_inifile -> {timeout}.'"'.
    ' --connect-timeout="'.$read_inifile -> {timeout}.'"'.
    ' --read-timeout="'.$read_inifile -> {timeout}.'"'.
    ' --tries="1"'.
    ' --quota="1000000"'.
    ' --user-agent="'.$useragent.'"'.
    ' --output-document="'. $file .'" '.$url;



вот такая строка позволяет работать через wget

но буду очень признателен, если поможете таки добить LWPx
потому как на винде он работает отлично.

огромное спасибо.

и может быть кто подскажет..как от WGET поймать его STDOUT
то есть то что он на экран показывает, мне бы поймать и разобрать (статус ответа сервера и прочее)..

Это сообщение отредактировал(а) burakov - 20.12.2013, 10:38


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
krypt3r
Дата 23.12.2013, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



Цитата
но буду очень признателен, если поможете таки добить LWPx

Проблемы при установке Net::SSLeay (или какой там у вас) озвучьте. Наверняка не хватает пакетов. libssl-dev стоит?
PM MAIL   Вверх
burakov
Дата 23.12.2013, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



я модули поставил вот так (тоже люди посоветовали). прямо из дистриба дебиан.

apt-get install libnet-ssleay-perl
apt-get install libcrypt-ssleay-perl
apt-get install liblwpx-paranoidagent-perl

парсер после этого запускается без ошибок.НО
все это делалось ради 
LWPx::ParanoidAgent

а он не смог оборвать соединения по таймауту (ради чего весь сыр бор). а вот под виндой работает нормально. ставил модуль через 
perl -MCPAN -e shell




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
krypt3r
Дата 23.12.2013, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



Что-то каша у вас какая-то: модуль можно ставить либо через apt-get, либо через CPAN. В CPAN-е лежат более свежие версии, собираемые из исходников. Если репозиторная версия вас не устраивает, удалите ее и поставьте CPAN-овскую.
PS. Мой предыдущий пост был о проблемах установки модуля со CPAN.
PM MAIL   Вверх
burakov
Дата 24.12.2013, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



при установке perl -MCPAN -e shell
не может корректно поставить зависимости

Crypt-SSLeay-0.64.tar.gz   
(Net::SSL); 




Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  log.txt 1,44 Kb


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
krypt3r
Дата 24.12.2013, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



Лучше бы полный лог. Все самое интересное — выше "Test Summary Report"
PM MAIL   Вверх
burakov
Дата 24.12.2013, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



ну вот. там теперь чего то стоит. чего то нет.
пришлось вот так 

force install LWPx::ParanoidAgent > log1.txt

сделать


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  log1.txt 3,78 Kb


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
krypt3r
Дата 24.12.2013, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



libcrypt-ssleay-perl стоит? Попробуйте удалить его. LWPx::ParanoidAgent требует Crypt::SSLeay версии 0.64. Возможно, конфликт. Также попробуйте ставить Net::SSL отдельно либо вообще вручную (wget, tar, perl Makefile.PL, make, make test, если все норм будет, тогда make install)
PM MAIL   Вверх
burakov
Дата 24.12.2013, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



libcrypt-ssleay-perl
вот этого не было.

на всякий случай сделал apt-get remove

и попытался поставить
install Crypt::SSLeay

на нем выдает ошибки (пишет нет каких то библиотек)
лог приложил

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  log2.txt 2,42 Kb


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
noize
Дата 24.12.2013, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



Попробуйте поставить libssl, libssl-dev и на всякий случай openssl: aptitude install libssl1.0.0 libssl-dev openssl

Это сообщение отредактировал(а) noize - 24.12.2013, 15:34
PM MAIL   Вверх
krypt3r
Дата 25.12.2013, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



Цитата
SSLeay.xs:35:25: fatal error: openssl/ssl.h: No such file or directory

Ну вот видите, я же говорил проверить пакет libssl-dev
PM MAIL   Вверх
burakov
Дата 25.12.2013, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



в итоге было поставлено

apt-get install libnet-ssleay-perl
apt-get install libcrypt-ssleay-perl
apt-get install libssl-dev 
apt-get install openssl


даже потом и вот так
apt-get install liblwpx-paranoidagent-perl

потом все это через CPAN ставил
force install (потому как говорило мне, что "уже есть")

В итоге грабер запускается. 
работает , НО
коннект по таймауту не обрывает. (знакомый админ сузил мне канал на мой ай пи, так что я точно знаю когда должно оборвать -- таймаут пставил 2 секунды)

под виндой ОТЛИЧНО. через 2 секунды показывает ошибку 500 и идет дальше. под линуксом просто не работает. долбит в сайт
и висит на нем из за узкого канала.

Логи от 2х (как я считаю проблемных модулей приложил)
они еще один от другого зависят, цепляют друг друга.

могу попросить сузить канал для Вас. чтобы понятно было о чем говорю. (поднял прокси хотел всем дать пробовать, но через прокси LWPx не работает)

 добейте это дело. ГОРЮ!

wget со своим --read_timeout как то до того хитро работает . не поймешь как оно его считает. это не таймаут по времени. а если есть перерыв в чтении .. вообщем не очень подходит. (Временно на нем пока сижу)

но LWPx это то, что надо. под виндой полностью удовлетворяет, 
а под линуксом ни черта не работает.

спасибо.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  1.zip 3,42 Kb


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Pfailed
Дата 26.12.2013, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 2
Всего: 39



версию Net::HTTP, LWP::UserAgent, IO::Socket::SSL, LWPx::ParanoidAgent в студию


--------------------
PM MAIL   Вверх
burakov
Дата 26.12.2013, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет




$Net::HTTP::VERSION = 6.06
$LWP::UserAgent::VERSION = 6.05
$LWPx::ParanoidAgent::VERSION =1.10


на

use IO::Socket::SSL; 

пишет


Net::SSLeay version 1.46 required--this is only version 1.36 at /usr/local/share/perl/5.10.1/IO/Socket/SSL.pm line 17.
BEGIN failed--compilation aborted at /usr/local/share/perl/5.10.1/IO/Socket/SSL.pm line 17.
Compilation failed in require at ./test3.pl line 16.
BEGIN failed--compilation aborted at ./test3.pl line 16.



как мне именно Net::SSLeay version 1.46 поставить?
я с CPAN ставлю., 
perl -MCPAN -e shell
логи прикладываю..


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  1.zip 3,42 Kb


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
noize
Дата 26.12.2013, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



install MIKEM/Net-SSLeay-1.46.tar.gz
PM MAIL   Вверх
Pfailed
Дата 26.12.2013, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 2
Всего: 39



Я попробовал с этими версиями, у меня тоже таймаут не работает. Так что видимо баг, я зарепортил: https://github.com/csirtgadgets/LWPx-ParanoidAgent/issues/7
А работал у меня таймаут адекватно с такой комбинацией версий
$Net::HTTP::VERSION = 6.03
$LWP::UserAgent::VERSION = 6.04
$LWPx::ParanoidAgent::VERSION = 1.07

Так что как вариант можно даунгрейднуться


--------------------
PM MAIL   Вверх
burakov
Дата 27.12.2013, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



дак.. как же найти эти старые версии модулей и как поставить?
посмотрел на cpan.org только последние... ссылок никаких на старые версии нет..

к тому же, даже с самым новым вариантом
install MIKEM/Net-SSLeay-1.46.tar.gz 
корректно не становится. (лог приложил)


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  3.log 2,48 Kb


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
alezzz
Дата 27.12.2013, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



http://www.cpan.org/authors/id/G/GA/GAAS/  Net::HTTP от 6.00 до 6.06, остальные по такому же принципу

или такой вариант http://stackoverflow.com/questions/260593/...f-a-perl-module , но сам не пробовал

Это сообщение отредактировал(а) alezzz - 27.12.2013, 10:36
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1488 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.