Это старый вопрос, но он все еще занимает первое место в Google для меня, поэтому я полагаю, что правильный ответ может быть полезен для кого-то рядом со мной.
Решение оказывается очень простым. в do_GET (), do_POST и т. д. вам нужно только добавить следующее:
content = self.gzipencode(strcontent)
...your other headers, etc...
self.send_header("Content-length", str(len(str(content))))
self.send_header("Content-Encoding", "gzip")
self.end_headers()
self.wfile.write(content)
self.wfile.flush()
strcontent - ваш фактический контент (как в HTML, javascript или других ресурсах HTML)
и gzipencode:
def gzipencode(self, content):
import StringIO
import gzip
out = StringIO.StringIO()
f = gzip.GzipFile(fileobj=out, mode='w', compresslevel=5)
f.write(content)
f.close()
return out.getvalue()