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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему Lwp UserAgent иногда выдает ответ Timeout ? выдаёт "Cant connect Timeout" 
:(
    Опции темы
stan777
  Дата 29.1.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня скрипт на Perl проверяющий живы ли ссылки, написан c помощью 
LWP, работает нормально, но иногда выдает ответ Timeout, но рабочую ссылку 
я уже и так поднял Timeout=120, что делать может у кого-то 
есть идеи ? 
Выдаёт "Cant connect Timeout", на рабочую ссылку где-то в 1 из 10 запросов ! Может это глюк LWP agenta или глюк сервера ?
PM MAIL   Вверх
nitr
Дата 29.1.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



stan777, как говорится, код в студию smile
И ссылку, по вашим словам "рабочую" smile

Добавлено @ 16:48 
stan777, это обычно, если нерабочая ссылка smile или у вас прокси smile


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


Опытный
**


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

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



Не обязательно, таки может быть перегруз сервера, если даж Ваш скрипт делает оччень много запросов, то такое мож случиться... попробуйте sleep 1 вставить меж запросами... то есть таймаут для LWP можно и уменьшить, а вот время меж запросами какое-то сделать.
Ну и конечно как заметил nitr, прокси на это влияет сильно.

Также может быть защита от DDoS на сервере, с одного IP слишком много запросов сразу...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
stan777
Дата 29.1.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Переход на гет в случии не удачи хедом конечно уменьшает количество ответов таймаут, но редко они выпадают, Ссылка на которой она выпадает это rambler.ru. Вот такие дела.   

Это сообщение отредактировал(а) stan777 - 31.1.2007, 12:27
PM MAIL   Вверх
Nab
Дата 29.1.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну вот как раз в рамблере и может стоять защита от слишком частых запросов с одного адреса... 
Я такое у яндекса наблюдаю, посему и писал свой прокси чекер smile чтоб IP не слишком часто повторялся...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
stan777
Дата 29.1.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Nab @ 29.1.2007,  17:51)
Ну вот как раз в рамблере и может стоять защита от слишком частых запросов с одного адреса... 
Я такое у яндекса наблюдаю, посему и писал свой прокси чекер smile чтоб IP не слишком часто повторялся...

А где ты там видишь много запросов? Tам всего по одному на ссылку !

Это сообщение отредактировал(а) stan777 - 29.1.2007, 18:29
PM MAIL   Вверх
nitr
Дата 29.1.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



stan777, ты это не указал smile
т.е. в @var = (..., 'rambler.ru') ?


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


Шустрый
*


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

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



да точно а ты думаешь он одновремеено все из @var посылать будет я думаю он должен дожаться response'a ! Или нет ?

Добавлено @ 18:39 
хорошо как вы советовали по экспериментирую со sleep(2); 2-думаю должно хватить.
PM MAIL   Вверх
nitr
Дата 29.1.2007, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

#!perl
use strict; use warnings;
use LWP::UserAgent;

my @var = ('http://rambler.ru', 'http://yandex.ru');
my $ua = LWP::UserAgent->new('agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
$ua->default_header('Accept' => 'text/plain');
$ua->timeout(30);
foreach (@var) {
    my $response = $ua->head($_);
    if ($response->is_success) {
        print "$_: ".$response->content."\n";
    } else {
        $response = $ua->get($_);
        if ($response->is_success) {
            print "$_: ".$response->content."\n";
        } else {
            print "$_: ".$response->status_line."\n";
        }    
    }
}



Добавлено @ 18:47 
stan777, похоже он имел ввиду, что ты скрипт запустил наверное уже не в первый раз smile вот и забанили smile

Это сообщение отредактировал(а) nitr - 29.1.2007, 18:45


--------------------
PM   Вверх
stan777
Дата 29.1.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если ты обновишь страницу тебя не забанят, кстати я нашел отличную ссылку по этому делу
http://dev.w3.org/cvsweb/validator/httpd/c...ic/checklink.pl?
можно сравнить професиональный код с моим smile и решить где ошибки.

Добавлено @ 18:50 
особенно интересно смотреть раннии версии.
Забуть ты про бан дело не в бане. 
а это обезательно указывать $AGENT->env_proxy; просто я смотрю некоторые "хакеры" указывают..


Это сообщение отредактировал(а) stan777 - 29.1.2007, 19:03
PM MAIL   Вверх
nitr
Дата 29.1.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



И что эта ссылка? Она при чём здесь? У тебя ошибка с таймаутом, что это значит... гугля ответит smile


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


Опытный
**


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

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



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


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
stan777
Дата 29.1.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В файле links.txt две ссылки http://rambler.ru и http://rambler.ru/news/ програма проверяет ссылки в 6 утра и отправляет почту. Может 1 из 10 проверок даст результат "Cann't connect to http://rambler.ru Timeout". Я пытался увеличивать таймаут довел до 120, но ошибка проболжала выскакивать. Да, еще одно явление, что две ссылки результат "Cann't connect to Timeout", выдавала ли одна либо вторая. В чем конкретно дело, понять не могу? Мне вот подсказали что возможно нужно между запросами, ставить задержку типа: sleep(2);  Я еще это не опробывал...

Это сообщение отредактировал(а) stan777 - 31.1.2007, 13:10
PM MAIL   Вверх
stan777
Дата 30.1.2007, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Щас протестировал этот код в ActivePerl в WindowsXP, запустил его как минимум 100 раз,  ни одного "cann't connect to (Timeout)". Видемо дело но в коде. Щас протестирую на Линуксе 9.2 и перле 5.8.2

Это сообщение отредактировал(а) stan777 - 31.1.2007, 13:09
PM MAIL   Вверх
nitr
Дата 30.1.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



stan777, твой код можно править и править... (имхо)
вот мааааленький кусочек:
Код
use strict;
...
# ненужная переменная, да и во многих местах встречается :)
#$links="links.txt";
# лучше массив назвать "ссылки" = links, более логично ;)

# пишем "or die" вместо "|| die" :)
open LINKS, "<links.txt" or die "Can't open File links.txt, Before run create file links.txt with links the same directory or run with $0 -h\n\n";
chomp(my @links = <LINKS>);
close LINKS;

...


ещё, тоже имхо, но может кто согласится smile если уж используешь LWP::UserAgent, так зачем ещё что-то? Там полный комплект =) да и работает он так же с такими же модулями... одно на другое...

Добавлено @ 00:57 
В своём примере выше уже показал работу с LWP::UserAgent, имхо верную...

Добавлено @ 00:58 
И как любому новичку пишу - ЭТО СОВЕТЫ smile


--------------------
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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