mirror of
https://github.com/python/cpython.git
synced 2025-08-30 21:48:47 +00:00
Another patch from Andy Dustman:
""" Here's a patch for the ForkingMixIn which will prevent the server from forking itself into the ground. Note: I've tested a very similar patch (subclassed ForkingMixIn) but not actually tested this one. As you might surmise, this was done out of necessity... If the maximum number of children are already running, block while waiting for a child to exit. """ (I added that last sentence as a comment to the code --GvR.)
This commit is contained in:
parent
ddc469679b
commit
2ab455a8fa
1 changed files with 8 additions and 1 deletions
|
@ -281,12 +281,19 @@ class ForkingMixIn:
|
|||
"""Mix-in class to handle each request in a new process."""
|
||||
|
||||
active_children = None
|
||||
max_children = 40
|
||||
|
||||
def collect_children(self):
|
||||
"""Internal routine to wait for died children."""
|
||||
while self.active_children:
|
||||
if len(self.active_children) < self.max_children:
|
||||
options = os.WNOHANG
|
||||
else:
|
||||
# If the maximum number of children are already
|
||||
# running, block while waiting for a child to exit
|
||||
options = 0
|
||||
try:
|
||||
pid, status = os.waitpid(0, os.WNOHANG)
|
||||
pid, status = os.waitpid(0, options)
|
||||
except os.error:
|
||||
pid = None
|
||||
if not pid: break
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue