From 4fcf2c16b21f9514589b0159df1fafb962608532 Mon Sep 17 00:00:00 2001 From: Ching Kuo Date: Mon, 30 Nov 2020 14:46:54 +0800 Subject: [PATCH] Handle Sigterm Properly Currently oslo.metrics http server doesn't handle sigterm signal. This commit added support to handle sigterm and shutdown gracefully. Change-Id: I3a5b1a5ebcadfd0c64fcbea0216503dd7f984411 --- oslo_metrics/__main__.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/oslo_metrics/__main__.py b/oslo_metrics/__main__.py index eabd15f..d35a768 100644 --- a/oslo_metrics/__main__.py +++ b/oslo_metrics/__main__.py @@ -15,6 +15,7 @@ import os import select +import signal import socket import stat import sys @@ -82,6 +83,15 @@ class MetricsListener(): self.start = False +httpd = None + + +def handle_sigterm(_signum, _frame): + LOG.debug("Caught sigterm") + shutdown_thread = threading.Thread(target=httpd.shutdown) + shutdown_thread.start() + + def main(): cfg.CONF(sys.argv[1:]) socket_path = cfg.CONF.oslo_metrics.metrics_socket_file @@ -96,7 +106,9 @@ def main(): app = make_wsgi_app() try: + global httpd httpd = make_server('', 3000, app) + signal.signal(signal.SIGTERM, handle_sigterm) httpd.serve_forever() except KeyboardInterrupt: pass -- GitLab