MCPcopy
hub / github.com/benoitc/gunicorn / reap_workers

Method reap_workers

gunicorn/dirty/arbiter.py:1066–1089  ·  view source on GitHub ↗

Reap dead worker processes.

(self)

Source from the content-addressed store, hash-verified

1064 self.kill_worker(pid, signal.SIGKILL)
1065
1066 def reap_workers(self):
1067 """Reap dead worker processes."""
1068 try:
1069 while True:
1070 wpid, status = os.waitpid(-1, os.WNOHANG)
1071 if not wpid:
1072 break
1073
1074 exitcode = None
1075 if os.WIFEXITED(status):
1076 exitcode = os.WEXITSTATUS(status)
1077 elif os.WIFSIGNALED(status):
1078 sig = os.WTERMSIG(status)
1079 self.log.warning("Dirty worker (pid:%s) killed by signal %s",
1080 wpid, sig)
1081
1082 if exitcode == self.WORKER_BOOT_ERROR:
1083 self.log.error("Dirty worker failed to boot (pid:%s)", wpid)
1084
1085 self._cleanup_worker(wpid)
1086 self.log.info("Dirty worker exited (pid:%s)", wpid)
1087 except OSError as e:
1088 if e.errno != errno.ECHILD:
1089 raise
1090
1091 async def reload(self):
1092 """Reload workers (SIGHUP handling)."""

Callers 3

_handle_sigchldMethod · 0.95
stopMethod · 0.95

Calls 4

_cleanup_workerMethod · 0.95
warningMethod · 0.45
errorMethod · 0.45
infoMethod · 0.45

Tested by 1