Perl. Мультиплекс и AnyEvent::HTTPD
Две недели назад нужно было написать простой (легкий) веб-сервер, решил еще раз сделать выбор между POE, IO::Lambda и AnyEvent.
IO::Lambda -- сразу не заработала, позже выяснилось, что я соединение не закрывал (спасибо автору модуля за техподдержку :)
AnyEvent. Тут я взял AnyEvent::HTTPD (не от Леманна) и поразился, что модуль написан плохо, в реврайт правилах все слеши заменены на _ (ужас :), работа с тсп по нескольким модулям размазана и работает только под 5.10 (причем использованы только именнованные значения в регекспах, даже say и given нет :). За 10 минут я полностью переписал на 5.8. Заработало, но как-то не очень.
В итоге я написал на POE, решение получилось красивым, хоть по скорости пое проигрывает (немного), но достойной замены я еще не нашел.Вернусь к AnyEvent:HTTPD, сегодня вышел апдейт модуля и в ченже вот, что написано:
ААА, он сам понял все или я управляю людьми на расстояние :-)
Original post http://sharifulin.livejournal.com/41330.html
IO::Lambda -- сразу не заработала, позже выяснилось, что я соединение не закрывал (спасибо автору модуля за техподдержку :)
AnyEvent. Тут я взял AnyEvent::HTTPD (не от Леманна) и поразился, что модуль написан плохо, в реврайт правилах все слеши заменены на _ (ужас :), работа с тсп по нескольким модулям размазана и работает только под 5.10 (причем использованы только именнованные значения в регекспах, даже say и given нет :). За 10 минут я полностью переписал на 5.8. Заработало, но как-то не очень.
В итоге я написал на POE, решение получилось красивым, хоть по скорости пое проигрывает (немного), но достойной замены я еще не нашел.Вернусь к AnyEvent:HTTPD, сегодня вышел апдейт модуля и в ченже вот, что написано:
0.04 Sun Dec 28 15:48:28 CET 2008 - removed TCP* classes and using AnyEvent::Handle instead. - added size and maxlength args to the C<entry> function in Appgets - changed the API to actually call the events for all path segments of an URL. also removed the ugly '/' => '_' mapping for the path seperators. Sorry for any breakage in your code ;-/ - removed Perl 5.10 dependency.
ААА, он сам понял все или я управляю людьми на расстояние :-)
Original post http://sharifulin.livejournal.com/41330.html