Commit 2acb2550 authored by Denis Bilenko's avatar Denis Bilenko

server: stop accepting when pool is full

parent 99c7241e
...@@ -69,6 +69,11 @@ class StreamServer(BaseServer): ...@@ -69,6 +69,11 @@ class StreamServer(BaseServer):
except AttributeError: except AttributeError:
pass pass
def set_spawn(self, spawn):
BaseServer.set_spawn(self, spawn)
if self.pool is not None:
self.pool._available_event.rawlink(self._start_accepting)
def set_handle(self, handle): def set_handle(self, handle):
BaseServer.set_handle(self, handle) BaseServer.set_handle(self, handle)
# make SSL work: # make SSL work:
...@@ -85,6 +90,12 @@ class StreamServer(BaseServer): ...@@ -85,6 +90,12 @@ class StreamServer(BaseServer):
if self._accept_event is None: if self._accept_event is None:
self._accept_event = core.read_event(self.socket.fileno(), self._do_accept, persist=True) self._accept_event = core.read_event(self.socket.fileno(), self._do_accept, persist=True)
def _start_accepting(self, _event):
if self._accept_event is None:
if 'socket' not in self.__dict__:
return
self._accept_event = core.read_event(self.socket.fileno(), self._do_accept, persist=True)
def stop_accepting(self): def stop_accepting(self):
if self._accept_event is not None: if self._accept_event is not None:
self._accept_event.cancel() self._accept_event.cancel()
...@@ -97,9 +108,10 @@ class StreamServer(BaseServer): ...@@ -97,9 +108,10 @@ class StreamServer(BaseServer):
assert event is self._accept_event assert event is self._accept_event
address = None address = None
try: try:
client_socket, address = self.socket.accept()
if self.full(): if self.full():
self.stop_accepting()
return return
client_socket, address = self.socket.accept()
self.delay = self.min_delay self.delay = self.min_delay
client_socket = socket.socket(_sock=client_socket) client_socket = socket.socket(_sock=client_socket)
spawn = self.spawn spawn = self.spawn
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment