From 88fb0e2ac120a4c154fa016c0414e92fa3fb55b7 Mon Sep 17 00:00:00 2001 From: Jonathan Zernik Date: Thu, 19 Mar 2020 18:10:46 -0700 Subject: [PATCH] Shut down gracefully on sigterm (#8) --- squeaknode/client/main.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/squeaknode/client/main.py b/squeaknode/client/main.py index 4ac738ef..0b600807 100644 --- a/squeaknode/client/main.py +++ b/squeaknode/client/main.py @@ -1,5 +1,7 @@ import argparse import logging +import signal +import sys import threading import time @@ -53,6 +55,11 @@ def start_rpc_server(node): return server, thread +def sigterm_handler(_signo, _stack_frame): + # Raises SystemExit(0): + sys.exit(0) + + def parse_args(): parser = argparse.ArgumentParser( description="squeaknode runs a node using squeak protocol. ", @@ -117,10 +124,15 @@ def run_client(config): # start rpc server rpc_server, rpc_server_thread = start_rpc_server(node) - while True: - time.sleep(10) + signal.signal(signal.SIGTERM, sigterm_handler) - close_db(db) + print("Starting client...") + try: + while True: + time.sleep(1) + finally: + print("Shutting down...") + close_db(db) if __name__ == '__main__':