#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Copyright 2018 Spanish National Research Council (CSIC)
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

import signal
import sys


def shutdown_server(signum, frame):
    """Handler for signals, to exit nicely."""
    print("Got signal (%s), exiting!" % signum)
    sys.exit()


def handle_signals():
    """Handle SIGINT and SIGTERM.

    When running on the Werkzeug simple server we need to handle thos signals,
    otherwise the process will not stop (specially on SIGTERM). This is an
    issue when running inside a Docker container, as Docker will use then
    a SIGKILL to terminate the program.
    """
    signal.signal(signal.SIGINT, shutdown_server)
    signal.signal(signal.SIGTERM, shutdown_server)
