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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Timeout в LWP 
:(
    Опции темы
Валерия
Дата 6.2.2009, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Собственно, есть полу-мертвый хост (  smile )
Так вот, если я делаю запрос к нему через LWP, то может скрипт зависнуть и ждать ответа от сервера "годами" smile
Если ставлю 
Код

$ua->timeout = 10;

То не помагает, будто оно вообще ни на что не влияет...
Что делать?
Читала что можно сделать через alarm, но тогда получаеться немного, простите, через попу, и говорят что под виндой может не работать.

LWP 5.64
ActivePerl 5.10
PM MAIL   Вверх
arto
Дата 6.2.2009, 08:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



$ua->timeout (10) ?
PM MAIL ICQ   Вверх
Валерия
Дата 6.2.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ой, я так и задавала как ты написал, просто тут опечаталась smile
PM MAIL   Вверх
NuINu
Дата 6.2.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Валерия @  6.2.2009,  12:08 Найти цитируемый пост)
Ой, я так и задавала как ты написал, просто тут опечаталась smile 

приведите полный код, я не верю что не работает!
PM MAIL   Вверх
Валерия
Дата 6.2.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

$proxy = "61.19.222.7:80";
$browser = LWP::UserAgent->new;
$browser->timeout(10);
$browser->cookie_jar(HTTP::Cookies->new);
$browser->proxy([qw(http https)] => "http://$proxy");
$response = $browser->get("http://yandex.ru")->as_string;
print $response;


Мне именно с проксей smile

Это сообщение отредактировал(а) Валерия - 6.2.2009, 15:51
PM MAIL   Вверх
NuINu
Дата 6.2.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


Опытный
**


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

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



На других форумах поискала, таки проблема в активпёрле, и советуют через alert делать smile
PM MAIL   Вверх
NuINu
Дата 6.2.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



alert?
PM MAIL   Вверх
tolkien
Дата 6.2.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



alarm некорректно работает в Windows. Вам следует перейти на UNIX. Или искать решения которые работают в Windows. 
Например для таймута следует использовать след код. 
Код


vec($rin, fileno(F), 1) = 1;
my $nfound = select($rout=$rin, undef, undef, .2);  #таймаут 0.2 сек. Если есть данные в сокете то nfound  будет true


И модули которые соответ. реализовали таймаут данным образом. Этот код 100% рабочий. И работает как в UNIX так и в Windows
PM MAIL   Вверх
FooBar
Дата 6.2.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



можно использовать WWW::Curl в нем есть и таймаут и параллельные запросы которые могут послужить заменой потокам, через прокси там тоже можно (вроде бы только http), если написать обёртку то по удобству не будет уступать lwp а по скорости будет превосходить, правда под вендой наверно придется помучиться с установкой
PM MAIL   Вверх
Валерия
Дата 9.2.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



FooBar, multi_curl есть и в php, только если отправить 20 запросов паралельных, то пока все не отработают ты не получишь ничего smile
Я как раз из за потоков в перле его и начала учить smile
Но на никсы не перейду.
Точнее мне без проблем перейти, но не заказчику smile

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


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

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


 




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


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

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