[Moscow.pm] AnyEvent::HTTP как ограничить размер ответа?

Павел Купцов pavel на kuptsov.info
Пт Дек 11 05:36:05 PST 2015


>А если не прикидываться браузером, который умеет websocket - не полегчает
>ли?
Нет, эта строка максимум влияет на то что останется в логах сервера


>«Бесконечно» — это как именно бесконечно? В заголовках ответа есть
Content-Length? >Есть, но не соответствует правде? Или нет? Или нет, но
внезапно есть Upgrade: >WebSocket? ;)
>Если там нормальный документ, просто слишком большой, чтобы его принимать,
>достаточно повесить обработчик на on_header и возвращать из него 0, если
что-то не >устраивает:
На заголовки Content-Length рассчитывать не приходится: зачастую
неправильные они или вообще их нет.
В данном конкретно случае content-lenght нет
Вот этот случай:
http://avtorradio.ru/
:))


--
Павел


>
>
>
> --
> Best regards,
> Andrey Kopeyko <andrey на kopeyko.ru>
>
> ------------------------------
>
> Message: 5
> Date: Fri, 11 Dec 2015 15:03:30 +0200
> From: Oleg Alistratov <ali на ali.org.ua>
> To: Moscow.pm group <moscow-pm на pm.org>
> Subject: Re: [Moscow.pm] AnyEvent::HTTP как ограничить
>         размер ответа?
> Message-ID: <2484231449839010 на web20j.yandex.ru>
> Content-Type: text/plain; charset=utf-8
>
>
>
> 11.12.2015, 14:31, "Павел Купцов" <pavel на kuptsov.info>:
> > Коллеги, вот вопрос по теме рассылки есть, т.е. по 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
> Moscow-pm на pm.org
> http://mail.pm.org/mailman/listinfo/moscow-pm
>
>
> ------------------------------
>
> Конец Дайджест списка рассылки Moscow-pm; том 98, выпуск 82
>
> ***********************************************************************************************
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20151211/611b3490/attachment.html>


Подробная информация о списке рассылки Moscow-pm