>А если не прикидываться браузером, который умеет websocket - не полегчает >ли? Нет, эта строка максимум влияет на то что останется в логах сервера
>«Бесконечно» — это как именно бесконечно? В заголовках ответа есть Content-Length? >Есть, но не соответствует правде? Или нет? Или нет, но внезапно есть Upgrade: >WebSocket? ;) >Если там нормальный документ, просто слишком большой, чтобы его принимать, >достаточно повесить обработчик на on_header и возвращать из него 0, если что-то не >устраивает: На заголовки Content-Length рассчитывать не приходится: зачастую неправильные они или вообще их нет. В данном конкретно случае content-lenght нет Вот этот случай: http://avtorradio.ru/ :)) -- Павел > > > > -- > Best regards, > Andrey Kopeyko <[email protected]> > > ------------------------------ > > Message: 5 > Date: Fri, 11 Dec 2015 15:03:30 +0200 > From: Oleg Alistratov <[email protected]> > To: Moscow.pm group <[email protected]> > Subject: Re: [Moscow.pm] AnyEvent::HTTP как ограничить > размер ответа? > Message-ID: <[email protected]> > Content-Type: text/plain; charset=utf-8 > > > > 11.12.2015, 14:31, "Павел Купцов" <[email protected]>: > > Коллеги, вот вопрос по теме рассылки есть, т.е. по perl :) > > > > Кто пользует у себя сабж - в частности его метод http_get, > > как решаете вопрос с ограничением размера ответа сервера? > > А то у меня попадаются в запросах сайты которые бесконечно отдают > text/html, в итоге скрипт не заканчивается по таймауту, а все это дело > принимает в память, что ведет к ее исчерпанию. > > «Бесконечно» — это как именно бесконечно? В заголовках ответа есть > Content-Length? Есть, но не соответствует правде? Или нет? Или нет, но > внезапно есть Upgrade: WebSocket? ;) > > Если там нормальный документ, просто слишком большой, чтобы его принимать, > достаточно повесить обработчик на on_header и возвращать из него 0, если > что-то не устраивает: > > http_get $url, > on_header => sub { > my ($headers) = @_; > return ($headers->{'content-length'} > 16384) ? 0 : 1; > }, > sub { ... } > > > > Вот на сейчас у меня примерно так: > > http_get $url, > > > > headers => { > > 'user-agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 > (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36', > > }, > > > > on_header => sub { > > $_[0]{"content-type"} =~ /^text\/html\s*(?:;|$)/ > > }, > > > > timeout => 20, > > > > sub { > > my ( $body, $hdr ) = @_; > > > > if ( $hdr->{Status} =~ /^2/ ) { > > say "OK"; > > } > > else { > > say "Error: $hdr->{Status}"; > > } > > > > Пока только вижу вариант с установкой обработчика на on_body - но не > нашел живых примеров. Если подкините немного - мои бесконечные > благодарности :))) > > > > -- > > Павел > > > -- > Oleg Alistratov > > > ------------------------------ > > Subject: Нижний колонтитул дайджеста > > _______________________________________________ > Moscow-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/moscow-pm > > > ------------------------------ > > Конец Дайджест списка рассылки Moscow-pm; том 98, выпуск 82 > > *********************************************************************************************** >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
