mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
don't dup the socket and just use another variable to test if we should
fetch from the socket or not
This commit is contained in:
parent
46086720f5
commit
eeee716b39
@ -23,7 +23,8 @@ class TeeInput(object):
|
|||||||
def __init__(self, socket, parser, buf):
|
def __init__(self, socket, parser, buf):
|
||||||
self.buf = buf
|
self.buf = buf
|
||||||
self.parser = parser
|
self.parser = parser
|
||||||
self.socket = socket.dup()
|
self.socket = socket
|
||||||
|
self._is_socket = True
|
||||||
self._len = parser.content_len
|
self._len = parser.content_len
|
||||||
if self._len and self._len < MAX_BODY:
|
if self._len and self._len < MAX_BODY:
|
||||||
self.tmp = StringIO.StringIO()
|
self.tmp = StringIO.StringIO()
|
||||||
@ -40,7 +41,7 @@ class TeeInput(object):
|
|||||||
@property
|
@property
|
||||||
def len(self):
|
def len(self):
|
||||||
if self._len: return self._len
|
if self._len: return self._len
|
||||||
if self.socket:
|
if self._is_socket:
|
||||||
pos = self.tmp.tell()
|
pos = self.tmp.tell()
|
||||||
while True:
|
while True:
|
||||||
if not self._tee(CHUNK_SIZE):
|
if not self._tee(CHUNK_SIZE):
|
||||||
@ -54,7 +55,7 @@ class TeeInput(object):
|
|||||||
|
|
||||||
def read(self, length=None):
|
def read(self, length=None):
|
||||||
""" read """
|
""" read """
|
||||||
if not self.socket:
|
if not self._is_socket:
|
||||||
return self.tmp.read(length)
|
return self.tmp.read(length)
|
||||||
|
|
||||||
if length is None:
|
if length is None:
|
||||||
@ -75,7 +76,7 @@ class TeeInput(object):
|
|||||||
return self._ensure_length(self.tmp.read(l), length)
|
return self._ensure_length(self.tmp.read(l), length)
|
||||||
|
|
||||||
def readline(self, size=-1):
|
def readline(self, size=-1):
|
||||||
if not self.socket:
|
if not self._is_socket:
|
||||||
return self.tmp.readline(size)
|
return self.tmp.readline(size)
|
||||||
|
|
||||||
orig_size = self._tmp_size()
|
orig_size = self._tmp_size()
|
||||||
@ -141,7 +142,7 @@ class TeeInput(object):
|
|||||||
if not data: break
|
if not data: break
|
||||||
self.buf += data
|
self.buf += data
|
||||||
del self.buf
|
del self.buf
|
||||||
self.socket = None
|
self._is_socket = False
|
||||||
|
|
||||||
def _tmp_size(self):
|
def _tmp_size(self):
|
||||||
if isinstance(self.tmp, StringIO.StringIO):
|
if isinstance(self.tmp, StringIO.StringIO):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user