mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
Fix: add ctrl+c signal for better exit (#5469)
### What problem does this PR solve? This patch add signal for ctrl + c that can exit the code friendly cause code base use thread daemon can not exit friendly for being started. how to reproduce 1. docker-compose -f docker/docker-compose-base.yml up 2. other window `bash docker/launch_backend_service.sh` 3. stop 1 first 4. try to stop 2 then two thread can not exit which must use `kill pid` This patch fix it and should fix most the related issues in the `issues` ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --------- Signed-off-by: yihong0618 <zouzou0208@gmail.com>
This commit is contained in:
@ -754,12 +754,33 @@ def main():
|
||||
if TRACE_MALLOC_ENABLED:
|
||||
start_tracemalloc_and_snapshot(None, None)
|
||||
|
||||
# Create an event to signal the background thread to exit
|
||||
stop_event = threading.Event()
|
||||
|
||||
background_thread = threading.Thread(target=report_status)
|
||||
background_thread.daemon = True
|
||||
background_thread.start()
|
||||
|
||||
# Handle SIGINT (Ctrl+C)
|
||||
def signal_handler(sig, frame):
|
||||
logging.info("Received Ctrl+C, shutting down gracefully...")
|
||||
stop_event.set()
|
||||
# Give the background thread time to clean up
|
||||
if background_thread.is_alive():
|
||||
background_thread.join(timeout=5)
|
||||
logging.info("Exiting...")
|
||||
sys.exit(0)
|
||||
|
||||
while True:
|
||||
handle_task()
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
try:
|
||||
while not stop_event.is_set():
|
||||
handle_task()
|
||||
except KeyboardInterrupt:
|
||||
logging.info("Interrupted by keyboard, shutting down...")
|
||||
stop_event.set()
|
||||
if background_thread.is_alive():
|
||||
background_thread.join(timeout=5)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user