From 5e345e73e922314b13e8cec957068ff2ae3e6814 Mon Sep 17 00:00:00 2001 From: Shane Hathaway Date: Thu, 5 Mar 2015 12:48:00 -0700 Subject: [PATCH] Unregister file descriptors when streams close. Otherwise, Supervisor spins the CPU when a child process closes stdout or stderr. --- supervisor/supervisord.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/supervisor/supervisord.py b/supervisor/supervisord.py index a786163d2..aa8e2353e 100755 --- a/supervisor/supervisord.py +++ b/supervisor/supervisord.py @@ -220,6 +220,9 @@ def runforever(self): 'read event caused by %(dispatcher)r', dispatcher=dispatcher) dispatcher.handle_read_event() + if (not dispatcher.readable() + and not dispatcher.writable()): + self.options.poller.unregister(fd) except asyncore.ExitNow: raise except: @@ -233,6 +236,9 @@ def runforever(self): 'write event caused by %(dispatcher)r', dispatcher=dispatcher) dispatcher.handle_write_event() + if (not dispatcher.readable() + and not dispatcher.writable()): + self.options.poller.unregister(fd) except asyncore.ExitNow: raise except: