File indexing completed on 2026-04-10 08:39:01
0001 import logging
0002 import os
0003 import signal
0004 import sys
0005
0006 from pandaserver.config import daemon_config
0007 from pandaserver.daemons.utils import END_SIGNALS, DaemonMaster
0008
0009
0010
0011 def get_logger():
0012 my_logger = logging.getLogger("PanDA-Daemon-Master")
0013
0014 while my_logger.hasHandlers():
0015 my_logger.removeHandler(my_logger.handlers[0])
0016
0017 _log_handler = logging.StreamHandler(sys.stdout)
0018 _log_formatter = logging.Formatter("%(asctime)s %(name)-12s: %(levelname)-8s %(message)s")
0019 _log_handler.setFormatter(_log_formatter)
0020
0021 my_logger.addHandler(_log_handler)
0022
0023 my_logger.setLevel(logging.DEBUG)
0024
0025 return my_logger
0026
0027
0028
0029 def kill_whole():
0030 os.killpg(os.getpgrp(), signal.SIGKILL)
0031
0032
0033
0034 def main():
0035
0036 if not getattr(daemon_config, "enable", False):
0037 return
0038
0039
0040 main_log = get_logger()
0041
0042 n_workers = getattr(daemon_config, "n_proc", 1)
0043 n_dbconn = getattr(daemon_config, "n_dbconn", 1)
0044 worker_lifetime = getattr(daemon_config, "proc_lifetime", 28800)
0045 use_tbif = getattr(daemon_config, "use_tbif", False)
0046
0047 main_log.info("main start")
0048
0049
0050 tmp_log = get_logger()
0051
0052
0053 master = DaemonMaster(
0054 logger=tmp_log,
0055 n_workers=n_workers,
0056 n_dbconn=n_dbconn,
0057 worker_lifetime=worker_lifetime,
0058 use_tbif=use_tbif,
0059 )
0060
0061
0062 def end_master(sig, frame):
0063 tmp_log.info(f"got end signal: {sig}")
0064 master.stop()
0065 kill_whole()
0066
0067
0068 for sig in END_SIGNALS:
0069 signal.signal(sig, end_master)
0070
0071
0072 master.run()
0073
0074 main_log.info("main end")
0075
0076
0077
0078 if __name__ == "__main__":
0079 main()