Python: генерация строки gzip путем возврата кусков - PullRequest
2 голосов
/ 27 апреля 2011

Я собираюсь попросить что-то, что не смог найти в Stackoverflow.Я делаю Django, и недавно я обнаружил, что могу транслировать вывод HTTP, используя генератор.Вывод страницы идеально подходит для обычного случая, однако я хотел передать поток вывода страницы, используя сжатие GZip.

Я пытался использовать простую функцию zlib.compress, но безрезультатно.Функция генерирует небольшие файлы gzip.

Я хочу вернуть небольшие фрагменты данных по мере их обработки в виде строки.Эти куски должны формировать содержимое файла Gzipped.Как можно это сделать?Спасибо.

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

используйте zlib.compressobj([level]) и Compress.compress(string) и Compress.flush([mode]) для завершения

import zlib
def compress(chunks):
    c = zlib.compressobj()
    for chunk in chunks:
       yield c.compress(chunk)
    yield c.flush(zlib.Z_FINISH)
0 голосов
/ 27 апреля 2011

Сжатие контента является собственностью вашего веб-сервера, а не структурой.Если вы используете apache, вы можете использовать mod_deflate .Я надеюсь, что вы не имеете в виду простой сервер, предоставленный django для тестирования. Если вы имеете в виду, сделайте это, а затем просто изучите код для термина gzip и посмотрите, выполняет ли он какое-либо сжатие вообще.

Кроме того, если вы думаете о сжатии на сервере приложений , имейте в виду, и лучше перенести это задание на веб-сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...