On Wednesday 27 March 2013 14:09:54 ciklop wrote: > >Некий Бен скорее всего неправ, и streaming_callback работает вне > > зависимости > > >от chunked transfer encoding. Во всяком случае, никаких явных указаний на > >обратное я не нашел. И было очень бы странно, если бы он это требовал. > > Тут есть такой нюанс - tornado может использовать simple_httpclient и > curl_httpclient > Вот как раз simple_httpclient явно ожидает Transfer-Encoding: chunked. Без > него streaming_callback работать не будет. > А вот curl_httpclient этот заголовок для этого случае не волнует, и с ним > всё прекрасно работает. >
Я посмотрел код simple_httpclient и проблема заключается в том, что он в принципе не поддерживает streaming_callback в том виде, в котором его полагает использовать автор топика. Для получения данных он зовет IOStream.read_bytes(), которая поддерживает установку streaming_callback, но он не пользуется этой возможностью вообще, не важно, используется ли chunked transfer encoding, или нет. Однако у simple_httpclient также определен streaming_callback, но он несет совершенно другой смысл и работает иначе. Совпадение в названиях - тут скорее нелепая ошибка. Насколько я понимаю, задача автора - экономить ресурсы и память, не буферизировать большой файл целиком в память, а обрабатывать его по мере получения. Для этой задачи simple_httpclient в принципе не подходит. Не даром simple в названии. -- Валентин Бартенев http://nginx.org/en/donation.html _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
