(self)
| 272 | self.started = True |
| 273 | |
| 274 | def stop(self): |
| 275 | process = psutil.Process(self.proc.pid) # type: ignore[reportOptionalMemberAccess] |
| 276 | |
| 277 | for proc in process.children(recursive=True): |
| 278 | try: |
| 279 | proc.kill() |
| 280 | except psutil.NoSuchProcess: |
| 281 | pass |
| 282 | |
| 283 | try: |
| 284 | process.kill() |
| 285 | except psutil.NoSuchProcess: |
| 286 | pass |
| 287 | |
| 288 | try: |
| 289 | process.wait(1) |
| 290 | except (psutil.TimeoutExpired, psutil.NoSuchProcess): |
| 291 | pass |
| 292 | |
| 293 | |
| 294 | class ProcessRunner(BaseDashRunner): |