![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
О чем именно ты справшиваешь? Если о POE, то по любому сначала вот сюда http://poe.perl.org/. А вообщето это фраймворк реализующий невытесняющую многозадачность основанную на событийной модели. Очень хорош для всяких демонов, серверов, конечных автоматов и многого другого... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Понятно, ещё одна примочка для разработки.
Ну это не новость. |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
tishaishii, примочка и еще какая!!! Очень удобно работать.
|
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Мне удобно создать свой интерфейсный класс, от него родить нужные мне классы и написать что мне надо.
|
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Интересно сколько времени на это у тебя уйдет ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Особенно на нечто подобное POE
![]() |
|||
|
||||
DooZ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
был бы благодарен за пример =) |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Ок, объясню на твоем же примере ... Если внимательно вчитаться в описание POE то там достаточно четко говориться что это такое и зачем, а именно Фраймворк управляемый событиями с невытесняющей многозадачностью... А теперь объясню подробнее. Понятие невытесняющей исходит из того, что POE в изначальном варианте выполняется одним процессом и разделение времени выполнения между разными сессиями происходит внутри одного единственного процесса. А означает это то, POE само по себе, не может переключиться на другую задачу(сессию) для выполнения поставленной задачи или реагирования на событие... Необходимо отдавать управление POE из своей процедуры, в особенности если она заведомо продолжительна во времени... Следующее, сессия в POE в терминах операционнки, это как отдельный процесс. Посему создание сессии для каждого запроса это нонсенс :( думаю просто непонимание того как работает эта система, и невнимательное списывание с примеров... нигде такого даже не встречал :( В цикле нужно посылать сообщения к определенной сессии, не более... И желательно давать возможность хоть иногда их отработать ![]() Способов передать управление есть несколько, это и run_one_timeslice, и всякого рода таймауты, но самый простой это просто смена цикла на посылку сообщений самому себе... Вот один из примеров как можно вызвать загрузку твоих урлов и начать получать ответы задолго до окончания списка... ![]()
Для уменьшения нагрузки на CPU я применяю для таких достаточно длинных запросов такой запрос $_[KERNEL]->delay('send_request', 1) нагрузка с 70-80% падает до 1% правда и время выполнения увеличивается вдвое, но все зависит от поставленной задачи, и приемлимой скорости проверки урлов... Также временной промежуток можно другой поставить... А вообще, я еще несколько решений у себя попробовал в процессе разделения задачи на части. И как результат, была написана парочка компонентов и один фильтр ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
В таких модулях, как правило, куча хлама - на все случаи жизни, который, как правило, в одном проекте весь не используюется. Так что не много времени, зато как надо. Это сообщение отредактировал(а) tishaishii - 11.3.2007, 01:42 |
|||
|
||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Ну если следовать такой логике, то врядли все возможности перла используются в каждом проекте, может напишешь свою, облегченную версию? Естественно некоторая избыточность присутствует, но обыкновенно в таких системах только необходимый функционал, а весь дополнительный вынесен во внешние компоненты, плагины и т.д. так что собирать нужный конструктор весьма недолго... Зато получается, весьма расширяемая, хорошо сопровождаемая, и быстро написанная система... Естественно я не говорю о самодостаточных скриптах, которые раз написал и забыл... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Вобщем, существует две концепции: использовать готовый код и писать свой. Это такая диалектика кодинга. Думаю, истина где-то по-середине, как обычно.
|
|||
|
||||
G0rinich |
|
||||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: нет Всего: 1 |
Nab, а не боишься такими темпами свалить процесс?
Да, POE::Component::Client::HTTP способен делать параллельно несколько запросов. Но отдать ему сразу 100К запросов - напряг ![]() А если запросов надо сделать миллионы? Во первых ссылки надо хранить в БД и брать их оттуда пачками. Вот пример
Ну и код драйвера:
Код гарантированно рабочий. Хавает ~10 линков в секунду. Одновременно обрабатывает не более $JOBSMAX ссылок. Это сообщение отредактировал(а) G0rinich - 30.3.2007, 14:10 |
||||
|
|||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
G0rinich, молодец однако
![]() И все верно говоришь, можно запросто завалить не только весь проект ![]() Хотелось немного проще показать как оно работает, чтобы сразу не отжирать кучу ресурсов и не создавать ненужные сессии стрвктуры, и т.д. Согласен, что с этими тонкостями человек столкнеся на следующем этапе, но они не принципиальны по сравнению к примеру со старым кодом ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
G0rinich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: нет Всего: 1 |
Айс?
|
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
Интересный топик. Я тоже уже пару месяцев с POE разбираюсь, вопросов много появляется, а документации нехватает, чесно говоря. Та что на poe.perl.org - частично устарела, особенно статьи. Может стоит отдельный подраздел на форуме завести?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |