summaryrefslogtreecommitdiff
path: root/flup/server/preforkserver.py
diff options
context:
space:
mode:
Diffstat (limited to 'flup/server/preforkserver.py')
-rw-r--r--flup/server/preforkserver.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/flup/server/preforkserver.py b/flup/server/preforkserver.py
index b7b2ff1..4c50e8c 100644
--- a/flup/server/preforkserver.py
+++ b/flup/server/preforkserver.py
@@ -126,8 +126,12 @@ class PreforkServer(object):
# Main loop.
while self._keepGoing:
- # Maintain minimum number of children.
- while len(self._children) < self._minSpare:
+ # Maintain minimum number of children. Note that we are checking
+ # the absolute number of children, not the number of "available"
+ # children. We explicitly test against _maxSpare to maintain
+ # an *optimistic* absolute minimum. The number of children will
+ # always be in the range [_maxSpare, _maxChildren].
+ while len(self._children) < self._maxSpare:
if not self._spawnChild(sock): break
# Wait on any socket activity from live children.