diff --git a/gunicorn/util.py b/gunicorn/util.py index 770fd995..7ad4bd14 100644 --- a/gunicorn/util.py +++ b/gunicorn/util.py @@ -70,19 +70,18 @@ def read_partial(sock, length): def write(sock, data): buf = "" buf += data - dlen = len(data) while buf: try: bytes = sock.send(buf) - if bytes < dlen: + if bytes < len(buf): buf = buf[bytes:] continue - return dlen + return bytes except socket.error, e: if e[0] in (errno.EWOULDBLOCK, errno.EAGAIN): break elif e[0] in (errno.EPIPE,): - continue + break raise def write_nonblock(sock, data): diff --git a/gunicorn/worker.py b/gunicorn/worker.py index a0e533ed..28d37aa2 100644 --- a/gunicorn/worker.py +++ b/gunicorn/worker.py @@ -96,7 +96,7 @@ class Worker(object): while self.alive: try: - ret = select.select([self.socket], [], [], 15) + ret = select.select([self.socket], [], [], 2.0) if ret[0]: break except select.error, e: @@ -125,8 +125,7 @@ class Worker(object): spinner = (spinner+1) % 2 self._fchmod(spinner) except socket.error, e: - if e[0] in [errno.EAGAIN, errno.ECONNABORTED, - errno.EWOULDBLOCK]: + if e[0] in [errno.EAGAIN, errno.ECONNABORTED]: break # Uh oh! raise