diff options
author | Marc Abramowitz <marc@marc-abramowitz.com> | 2016-03-07 15:19:32 -0800 |
---|---|---|
committer | Marc Abramowitz <marc@marc-abramowitz.com> | 2016-03-07 15:19:32 -0800 |
commit | 7251d0d4018b060dd86c9b779334516a1c032f7a (patch) | |
tree | cc8bca89295e3387f078fe019992ca99995a71da /paste | |
parent | 4cc33835964f7a62ce829a63ddff893e752232b3 (diff) | |
download | paste-git-gzip_work_with_generator.tar.gz |
Make gzip work with app that is generatorgzip_work_with_generator
```
$ tox
...
py26: commands succeeded
py27: commands succeeded
py34: commands succeeded
py35: commands succeeded
pypy: commands succeeded
congratulations :)
```
Diffstat (limited to 'paste')
-rw-r--r-- | paste/gzipper.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/paste/gzipper.py b/paste/gzipper.py index eca8775..5f59141 100644 --- a/paste/gzipper.py +++ b/paste/gzipper.py @@ -71,15 +71,18 @@ class GzipResponse(object): return [s] def finish_response(self, app_iter): - if self.compressible: - output = gzip.GzipFile(mode='wb', compresslevel=self.compress_level, - fileobj=self.buffer) - else: - output = self.buffer + output = None + try: for s in app_iter: + if not output: + if self.compressible: + output = gzip.GzipFile(mode='wb', compresslevel=self.compress_level, + fileobj=self.buffer) + else: + output = self.buffer output.write(s) - if self.compressible: + if output and self.compressible: output.close() finally: if hasattr(app_iter, 'close'): |