Files
wehub-resource-sync a203934033
Lint test / lint (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:34:58 +08:00

36 lines
974 B
Python

import os
import signal
class ShutdownManager:
def __init__(self, signals=None, stop_file=None):
if signals is None:
signals = [signal.SIGTERM, signal.SIGINT, signal.SIGUSR1, signal.SIGUSR2]
self._signals = signals
self._stop_file = stop_file or '/tmp/stop'
self._shutdown_requested = False
self._old_handlers = {}
def _handler(self, signum, frame):
self._shutdown_requested = True
def register(self):
for s in self._signals:
self._old_handlers[s] = signal.getsignal(s)
signal.signal(s, self._handler)
def unregister(self):
for s, handler in self._old_handlers.items():
signal.signal(s, handler)
self._old_handlers = {}
def should_shutdown(self) -> bool:
if self._shutdown_requested:
return True
return os.path.exists(self._stop_file)
def reset(self):
self._shutdown_requested = False