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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Асинхрон, Асинхронные GET запросы  
:(
    Опции темы
newert
Дата 9.7.2010, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток.

Понадобилось срочно написать скрипт асинхронного получения html кода страниц.
Само получение страницы делаю через обычный HTTP::Request
Однако с асинхронностью получилась проблема.

Посмотрел документацию на HTTP::Async
и написал нечто вроде :

Код

$async->add( HTTP::Request->new( GET => 'URL' ) );
while ( my $response = $async->wait_for_next_response ) {
   ...
    callback(...);
}


Вроде даже и работает, но мне была поставлена задача реализовать это через библиотеку libEV, чего сделать у меня не вышло
Вообщем, 2 вопроса :
1) как реализовать это через libEV ? ( желательно привести в пример рабочий код, программка то простая )
2) какая реализация и через какие библиотеки будет наиболее оптимальна?
PM MAIL   Вверх
KSURi
Дата 9.7.2010, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



AnyEvent::HTTP


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
newert
Дата 9.7.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо.
Написал новый код. Вид и правда стал более логичным.

Код

#!/usr/bin/perl

use AnyEvent::HTTP;
my $kol = 0;
my $w = AnyEvent->condvar;

http_get "http://ru.wikipedia.org/wiki/LHC", sub { # код в $_[0];
    print "first complete!\n";
    $kol += 1;
    if ($kol==2){
        $w->send;
    } 
};
http_get "http://ya.ru", sub { # код в $_[0];
    print "second complete!\n";
    $kol += $kol+1;
    if ($kol==2){
        $w->send;
    } 
};

$w->recv;



А EV использовать никто не умеет? :(

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


Эксперт
***


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

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



newert, посмотрите мой старый вариант класса для EV.

Это сообщение отредактировал(а) ginnie - 9.7.2010, 12:42


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


Новичок



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

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



Спасибо, сейчас посмотрю.
Вообщем, сдается мне, что AnyEvent и правда наиболее удобен для такой работы
PM MAIL   Вверх
newert
Дата 11.7.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Где-то вычитал, что AnyEvent не поддерживает keep-alive, по умолчанию он может сделать к одному хосту только 4 соединения.

Никто не знает что можно с этим поделать?  smile 
PM MAIL   Вверх
KSURi
Дата 12.7.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(newert @  9.7.2010,  12:31 Найти цитируемый пост)
А EV использовать никто не умеет? :(

AnyEvent - это обертка вокруг нескольких событийных машин (включая EV). Если AnyEvent обнаружит либу libev, то будет использовать её.


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


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

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


 




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


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

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