From 548f855f71f89c5a375584386f006181ae014ac8 Mon Sep 17 00:00:00 2001 From: Jake Moshenko Date: Tue, 9 Sep 2014 22:28:25 -0400 Subject: [PATCH] Use the pure python io module to avoid some interaction between gunicorn, wsgi, and bufferedreader that prevents gunicorn from properly sending the files. --- data/userfiles.py | 2 +- storage/cloud.py | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/data/userfiles.py b/data/userfiles.py index 7ee7726e4..950c4dd60 100644 --- a/data/userfiles.py +++ b/data/userfiles.py @@ -5,7 +5,7 @@ import magic from uuid import uuid4 from flask import url_for, request, send_file, make_response, abort from flask.views import View -from io import BufferedReader +from _pyio import BufferedReader logger = logging.getLogger(__name__) diff --git a/storage/cloud.py b/storage/cloud.py index 0d2028e1b..f7d922d6c 100644 --- a/storage/cloud.py +++ b/storage/cloud.py @@ -7,7 +7,7 @@ import boto.gs.connection import boto.s3.key import boto.gs.key -from io import UnsupportedOperation, BufferedIOBase +from io import BufferedIOBase from storage.basestorage import BaseStorage @@ -18,15 +18,12 @@ logger = logging.getLogger(__name__) class StreamReadKeyAsFile(BufferedIOBase): def __init__(self, key): self._key = key - self._finished = False def read(self, amt=None): - if self._finished: + if self.closed: return None resp = self._key.read(amt) - if not resp: - self._finished = True return resp def readable(self):