Commit a1764bc3458b605cedb33ff89c3ac2776ddd153a
1 parent
1edf739f
Exists in
master
and in
1 other branch
- Ctrl-C asks for confirmation before exiting
Showing
2 changed files
with
15 additions
and
6 deletions
Show diff stats
BUGS.md
| @@ -7,8 +7,6 @@ | @@ -7,8 +7,6 @@ | ||
| 7 | - periodicamente, cada user faz um post keep-alive. warning nos logs se offline. | 7 | - periodicamente, cada user faz um post keep-alive. warning nos logs se offline. |
| 8 | - Cada pergunta respondida é logo submetida. | 8 | - Cada pergunta respondida é logo submetida. |
| 9 | - submissao faz um post ajax. | 9 | - submissao faz um post ajax. |
| 10 | - | ||
| 11 | -- ctrl-c should ask for confirmation before exiting. | ||
| 12 | - eventos unfocus? | 10 | - eventos unfocus? |
| 13 | - servidor nao esta a lidar com eventos scroll/resize. ignorar? | 11 | - servidor nao esta a lidar com eventos scroll/resize. ignorar? |
| 14 | 12 | ||
| @@ -46,6 +44,7 @@ | @@ -46,6 +44,7 @@ | ||
| 46 | 44 | ||
| 47 | # FIXED | 45 | # FIXED |
| 48 | 46 | ||
| 47 | +- ctrl-c should ask for confirmation before exiting. | ||
| 49 | - md_to_html() nao usa o segundo argumento q. pode retirar-se dos templates? | 48 | - md_to_html() nao usa o segundo argumento q. pode retirar-se dos templates? |
| 50 | - config/logger.yaml ainda é do cherrypy... | 49 | - config/logger.yaml ainda é do cherrypy... |
| 51 | - uniformizar question.py com a de aprendizations... | 50 | - uniformizar question.py com a de aprendizations... |
serve.py
| @@ -9,7 +9,7 @@ import json | @@ -9,7 +9,7 @@ import json | ||
| 9 | import base64 | 9 | import base64 |
| 10 | import uuid | 10 | import uuid |
| 11 | # from mimetypes import guess_type | 11 | # from mimetypes import guess_type |
| 12 | - | 12 | +import signal |
| 13 | 13 | ||
| 14 | # packages | 14 | # packages |
| 15 | import tornado.ioloop | 15 | import tornado.ioloop |
| @@ -314,6 +314,14 @@ class AdminHandler(BaseHandler): | @@ -314,6 +314,14 @@ class AdminHandler(BaseHandler): | ||
| 314 | 314 | ||
| 315 | 315 | ||
| 316 | # ------------------------------------------------------------------------- | 316 | # ------------------------------------------------------------------------- |
| 317 | +def signal_handler(signal, frame): | ||
| 318 | + r = input(' --> Stop webserver? (yes/no) ') | ||
| 319 | + if r in ('yes', 'YES'): | ||
| 320 | + tornado.ioloop.IOLoop.current().stop() | ||
| 321 | + logging.critical('Webserver stopped.') | ||
| 322 | + sys.exit(0) | ||
| 323 | + | ||
| 324 | +# ------------------------------------------------------------------------- | ||
| 317 | # Tornado web server | 325 | # Tornado web server |
| 318 | # ------------------------------------------------------------------------- | 326 | # ------------------------------------------------------------------------- |
| 319 | def main(): | 327 | def main(): |
| @@ -370,14 +378,16 @@ def main(): | @@ -370,14 +378,16 @@ def main(): | ||
| 370 | http_server.listen(8443) | 378 | http_server.listen(8443) |
| 371 | 379 | ||
| 372 | # --- run webserver | 380 | # --- run webserver |
| 373 | - logging.info('Webserver running...') | 381 | + signal.signal(signal.SIGINT, signal_handler) |
| 374 | 382 | ||
| 375 | try: | 383 | try: |
| 384 | + logging.info('Webserver running... (Ctrl-C to stop)') | ||
| 376 | tornado.ioloop.IOLoop.current().start() # running... | 385 | tornado.ioloop.IOLoop.current().start() # running... |
| 377 | - except KeyboardInterrupt: | 386 | + except Exception: |
| 387 | + logging.critical('Webserver stopped.') | ||
| 378 | tornado.ioloop.IOLoop.current().stop() | 388 | tornado.ioloop.IOLoop.current().stop() |
| 389 | + raise | ||
| 379 | 390 | ||
| 380 | - logging.critical('Webserver stopped.') | ||
| 381 | 391 | ||
| 382 | # ------------------------------------------------------------------------- | 392 | # ------------------------------------------------------------------------- |
| 383 | if __name__ == "__main__": | 393 | if __name__ == "__main__": |