Kill Chromium processes properly to avoid defunct/zombie processes

This commit is contained in:
ngosang
2023-01-06 13:58:24 +01:00
parent 4807e9dbe2
commit 7d84f1b663
4 changed files with 12 additions and 4 deletions

View File

@@ -599,7 +599,8 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
def quit(self):
logger.debug("closing webdriver")
if hasattr(self, "service") and getattr(self.service, "process", None):
self.service.process.kill()
self.service.process.terminate()
self.service.process.wait(5)
try:
if self.reactor and isinstance(self.reactor, Reactor):
logger.debug("shutting down reactor")

View File

@@ -27,12 +27,14 @@ def start_detached(executable, *args):
reader, writer = multiprocessing.Pipe(False)
# do not keep reference
multiprocessing.Process(
process = multiprocessing.Process(
target=_start_detached,
args=(executable, *args),
kwargs={"writer": writer},
daemon=True,
).start()
)
process.start()
process.join()
# receive pid from pipe
pid = reader.recv()
REGISTERED.append(pid)