diff --git a/BUGS.md b/BUGS.md index 33cba30..e118e89 100644 --- a/BUGS.md +++ b/BUGS.md @@ -7,8 +7,6 @@ - periodicamente, cada user faz um post keep-alive. warning nos logs se offline. - Cada pergunta respondida é logo submetida. - submissao faz um post ajax. - -- ctrl-c should ask for confirmation before exiting. - eventos unfocus? - servidor nao esta a lidar com eventos scroll/resize. ignorar? @@ -46,6 +44,7 @@ # FIXED +- ctrl-c should ask for confirmation before exiting. - md_to_html() nao usa o segundo argumento q. pode retirar-se dos templates? - config/logger.yaml ainda é do cherrypy... - uniformizar question.py com a de aprendizations... diff --git a/serve.py b/serve.py index 63bab67..e320d84 100755 --- a/serve.py +++ b/serve.py @@ -9,7 +9,7 @@ import json import base64 import uuid # from mimetypes import guess_type - +import signal # packages import tornado.ioloop @@ -314,6 +314,14 @@ class AdminHandler(BaseHandler): # ------------------------------------------------------------------------- +def signal_handler(signal, frame): + r = input(' --> Stop webserver? (yes/no) ') + if r in ('yes', 'YES'): + tornado.ioloop.IOLoop.current().stop() + logging.critical('Webserver stopped.') + sys.exit(0) + +# ------------------------------------------------------------------------- # Tornado web server # ------------------------------------------------------------------------- def main(): @@ -370,14 +378,16 @@ def main(): http_server.listen(8443) # --- run webserver - logging.info('Webserver running...') + signal.signal(signal.SIGINT, signal_handler) try: + logging.info('Webserver running... (Ctrl-C to stop)') tornado.ioloop.IOLoop.current().start() # running... - except KeyboardInterrupt: + except Exception: + logging.critical('Webserver stopped.') tornado.ioloop.IOLoop.current().stop() + raise - logging.critical('Webserver stopped.') # ------------------------------------------------------------------------- if __name__ == "__main__": -- libgit2 0.21.2