Выход из приложения SimpleXMLRPCServer изящно

Я пытаюсь сделать небольшое приложение, используя SimpleXMLRPCServer, и мне интересно, как правильно закрыть его при получении SIGTERM.

Причина в том, что позже я сделаю скрипт запуска / остановки для приложения и хочу, чтобы оно выполняло различные действия перед остановкой.

Мой текущий код:

import SimpleXMLRPCServer
import signal
import sys

if __name__ == "__main__":
    print "setting up xmlrpc server"
    server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8000))

    def signal_handler(signum, frame):
        print "received signal"
        server.server_close()

        # perform clean up, etc. here...

        print "exiting, gracefully"
        sys.exit(0)

    # signals
    signal.signal(signal.SIGTERM, signal_handler)
    signal.signal(signal.SIGHUP, signal_handler)
    signal.signal(signal.SIGINT, signal_handler)

    print "serving forever"
    server.serve_forever()

Это работает, но я не совсем уверен, что делаю это "правильным" способом. Есть мысли или идеи?

Кроме того, есть ли другие сигналы, которые я должен слушать?

0 ответов

Другие вопросы по тегам