Python:通过返回块生成gzip字符串

时间:2011-04-26 22:26:01

标签: python django

我将要求在Stackoverflow上找不到的东西。 我正在做一些Django,我最近发现我可以使用生成器来传输HTTP输出。 页面的输出非常适合正常情况,但我想使用GZip压缩来流式传输页面输出。

我尝试过使用简单的zlib.compress函数,但无济于事。该函数生成小的gzip文件。

我希望在处理数据时返回小块数据,作为字符串。这些块应该形成Gzip压缩文件的内容。怎么会这样做? 感谢。

2 个答案:

答案 0 :(得分:1)

使用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)

答案 1 :(得分:0)

压缩内容是您的网络服务器的属性,而不是框架。如果您使用的是apache,则可以使用mod_deflate。我希望你没有提到django给出的简单服务器用于测试目的。如果你指的是这样做,那么只需查看术语gzip的代码,看看它是否进行任何类型的压缩。

另外,如果您考虑在app server中进行压缩,请注意,最好将此作业移至Web服务器。