MCPcopy
hub / github.com/ModelTC/LightLLM / signal_handler

Function signal_handler

lightllm/server/api_start.py:24–53  ·  view source on GitHub ↗
(sig, frame)

Source from the content-addressed store, hash-verified

22
23def setup_signal_handlers(http_server_process, process_manager):
24 def signal_handler(sig, frame):
25 if sig == signal.SIGINT:
26 logger.info("Received SIGINT (Ctrl+C), forcing immediate exit...")
27 if http_server_process:
28 kill_recursive(http_server_process)
29
30 process_manager.terminate_all_processes()
31 logger.info("All processes have been forcefully terminated.")
32 sys.exit(0)
33 elif sig == signal.SIGTERM:
34 logger.info("Received SIGTERM, shutting down gracefully...")
35 if http_server_process and http_server_process.poll() is None:
36 http_server_process.send_signal(signal.SIGTERM)
37
38 start_time = time.time()
39 while (time.time() - start_time) < 60:
40 if not is_process_active(http_server_process.pid):
41 logger.info("httpserver exit")
42 break
43 time.sleep(1)
44
45 if time.time() - start_time < 60:
46 logger.info("HTTP server has exited gracefully")
47 else:
48 logger.warning("HTTP server did not exit in time, killing it...")
49 kill_recursive(http_server_process)
50
51 process_manager.terminate_all_processes()
52 logger.info("All processes have been terminated gracefully.")
53 sys.exit(0)
54
55 signal.signal(signal.SIGTERM, signal_handler)
56 signal.signal(signal.SIGINT, signal_handler)

Callers

nothing calls this directly

Calls 3

kill_recursiveFunction · 0.90
is_process_activeFunction · 0.90

Tested by

no test coverage detected