Procházet zdrojové kódy

Use states in stop_all, log final output.

Chris McDonough před 19 roky
rodič
revize
bbff4b7218
2 změnil soubory, kde provedl 7 přidání a 5 odebrání
  1. 5 2
      src/supervisor/supervisord.py
  2. 2 3
      src/supervisor/tests.py

+ 5 - 2
src/supervisor/supervisord.py

@@ -584,9 +584,11 @@ class Supervisor:
         processes = self.processes.values()
         processes.sort()
         processes.reverse() # stop in desc priority order
-        
+
         for proc in processes:
-            if proc.pid:
+            # only stop running or starting processes
+            if proc.get_state() in (ProcessStates.STARTING,
+                                    ProcessStates.RUNNING):
                 proc.stop()
 
     def handle_procs_with_waitstatus(self):
@@ -621,6 +623,7 @@ class Supervisor:
             if process is not None:
                 name = process.config.name
                 process.drain()
+                process.log_output()
                 process.waitstatus = pid, sts
                 process.killing = 0
                 process.laststop = time.time()

+ 2 - 3
src/supervisor/tests.py

@@ -1540,10 +1540,9 @@ class SupervisordTests(unittest.TestCase):
     def test_stop_all(self):
         options = DummyOptions()
         pconfig1 = DummyPConfig('process1', 'process1', '/bin/process1')
-        process1 = DummyProcess(options, pconfig1)
+        process1 = DummyProcess(options, pconfig1, state=ProcessStates.STOPPED)
         pconfig2 = DummyPConfig('process2', 'process2', '/bin/process2')
-        process2 = DummyProcess(options, pconfig2)
-        process2.pid = 1
+        process2 = DummyProcess(options, pconfig2, state=ProcessStates.RUNNING)
         supervisord = self._makeOne(options)
         supervisord.processes = {'killed': process1, 'error': process2}