From d6b191538e269b8724cf932a2854ac4679bffa54 Mon Sep 17 00:00:00 2001 From: pigeon <91387291+QuietPigeon2001@users.noreply.github.com> Date: Tue, 18 Jul 2023 03:45:48 +0900 Subject: [PATCH] Add custom message when the user exits an app (#1345) --- reflex/reflex.py | 4 ++++ reflex/utils/processes.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/reflex/reflex.py b/reflex/reflex.py index c8a09c4a1..c81fa12ab 100644 --- a/reflex/reflex.py +++ b/reflex/reflex.py @@ -2,6 +2,7 @@ import os import platform +import signal import threading from pathlib import Path @@ -163,6 +164,9 @@ def run( args=(app.__name__, backend_host, backend_port, loglevel), ).start() + # Display custom message when there is a keyboard interrupt. + signal.signal(signal.SIGINT, processes.catch_keyboard_interrupt) + @cli.command() def deploy(dry_run: bool = typer.Option(False, help="Whether to run a dry run.")): diff --git a/reflex/utils/processes.py b/reflex/utils/processes.py index 7b494b3be..6b3b3e250 100644 --- a/reflex/utils/processes.py +++ b/reflex/utils/processes.py @@ -7,6 +7,7 @@ import os import signal import subprocess import sys +from datetime import datetime from typing import Optional from urllib.parse import urlparse @@ -145,3 +146,14 @@ def new_process(args, **kwargs): args, **kwargs, ) + + +def catch_keyboard_interrupt(signal, frame): + """Display a custom message with the current time when exiting an app. + + Args: + signal: The keyboard interrupt signal. + frame: The current stack frame. + """ + current_time = datetime.now().isoformat() + console.print(f"\nReflex app stopped at time: {current_time}")