we want to raise here on socket.error, so we can handle error later

This commit is contained in:
benoitc 2010-03-26 21:09:22 +01:00
parent 4dbde5c2ef
commit 53e756ec9f
3 changed files with 7 additions and 4 deletions

View File

@ -28,7 +28,7 @@ class EventletWorker(KeepaliveWorker):
client, addr = self.socket.accept() client, addr = self.socket.accept()
self.pool.spawn_n(self.handle, client, addr) self.pool.spawn_n(self.handle, client, addr)
except socket.error, e: except socket.error, e:
if e[0] in (errno.EWOULDBLOCK, errno.EAGAIN): if e[0] in (errno.EWOULDBLOCK, errno.EAGAIN, errno.ECONNABORTED):
return return
raise raise

View File

@ -28,15 +28,16 @@ class GEventWorker(KeepaliveWorker):
client, addr = self.socket.accept() client, addr = self.socket.accept()
self.pool.spawn(self.handle, client, addr) self.pool.spawn(self.handle, client, addr)
except socket.error, e: except socket.error, e:
if e[0] not in (errno.EAGAIN, errno.EWOULDBLOCK): if e[0] in (errno.EAGAIN, errno.EWOULDBLOCK, errno.ECONNABORTED):
raise return
raise
class GEventArbiter(arbiter.Arbiter): class GEventArbiter(arbiter.Arbiter):
@classmethod @classmethod
def setup(cls): def setup(cls):
from gevent import monkey from gevent import monkey
monkey.patch_all(thread=True, ssl=True) monkey.patch_all()
def init_worker(self, worker_age, pid, listener, app, timeout, conf): def init_worker(self, worker_age, pid, listener, app, timeout, conf):
return GEventWorker(worker_age, pid, listener, app, timeout, conf) return GEventWorker(worker_age, pid, listener, app, timeout, conf)

View File

@ -169,6 +169,8 @@ class Worker(object):
req.response.close() req.response.close()
if hasattr(respiter, "close"): if hasattr(respiter, "close"):
respiter.close() respiter.close()
except socket.error:
raise
except Exception, e: except Exception, e:
# Only send back traceback in HTTP in debug mode. # Only send back traceback in HTTP in debug mode.
if not self.debug: if not self.debug: