1
0
mirror of https://github.com/avatao-content/test-tutorial-framework synced 2024-11-15 04:17:17 +00:00

Make event_handler_main shutdown gracefully on SIGTERM and SIGINT

This commit is contained in:
Kristóf Tóth 2019-05-02 15:07:13 +02:00
parent 6544243844
commit e204cc7422

View File

@ -1,9 +1,10 @@
from ast import literal_eval from ast import literal_eval
from functools import partial from functools import partial
from signal import signal, SIGTERM, SIGINT
from tornado.ioloop import IOLoop from tornado.ioloop import IOLoop
from tfw import YamlFSM, FSMAwareEventHandler from tfw import YamlFSM, FSMAwareEventHandler, EventHandlerBase
from tfw.components import IdeEventHandler, TerminalEventHandler from tfw.components import IdeEventHandler, TerminalEventHandler
from tfw.components import ProcessManagingEventHandler, BashMonitor from tfw.components import ProcessManagingEventHandler, BashMonitor
from tfw.components import TerminalCommands, LogMonitoringEventHandler from tfw.components import TerminalCommands, LogMonitoringEventHandler
@ -136,9 +137,12 @@ if __name__ == '__main__':
# Example terminal command callback # Example terminal command callback
terminal.historymonitor.subscribe_callback(cenator) terminal.historymonitor.subscribe_callback(cenator)
try: event_handlers = EventHandlerBase.get_local_instances()
IOLoop.instance().start() def cleanup(sig, frame):
finally: for eh in event_handlers:
eventhandlers = {fsm, ide, terminal, processmanager, logmonitor, message_fsm_steps}
for eh in eventhandlers:
eh.cleanup() eh.cleanup()
exit(0)
signal(SIGTERM, cleanup)
signal(SIGINT, cleanup)
IOLoop.instance().start()