Merge pull request #687 from benoitc/feature/no_active_idle-2

Feature/no active idle 2
This commit is contained in:
Randall Leeds 2014-01-30 15:38:44 -08:00
commit 87083c294a

View File

@ -308,8 +308,15 @@ class Arbiter(object):
Sleep until PIPE is readable or we timeout.
A readable PIPE means a signal occurred.
"""
if self.WORKERS:
oldest = min(w.tmp.last_update() for w in self.WORKERS.values())
timeout = self.timeout - (time.time() - oldest)
# The timeout can be reached, so don't wait for a negative value
timeout = max(timeout, 1.0)
else:
timeout = 1.0
try:
ready = select.select([self.PIPE[0]], [], [], 1.0)
ready = select.select([self.PIPE[0]], [], [], timeout)
if not ready[0]:
return
while os.read(self.PIPE[0], 1):