Commit a1764bc3458b605cedb33ff89c3ac2776ddd153a

Authored by Miguel Barão
1 parent 1edf739f
Exists in master and in 1 other branch dev

- 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 7 - periodicamente, cada user faz um post keep-alive. warning nos logs se offline.
8 8 - Cada pergunta respondida é logo submetida.
9 9 - submissao faz um post ajax.
10   -
11   -- ctrl-c should ask for confirmation before exiting.
12 10 - eventos unfocus?
13 11 - servidor nao esta a lidar com eventos scroll/resize. ignorar?
14 12  
... ... @@ -46,6 +44,7 @@
46 44  
47 45 # FIXED
48 46  
  47 +- ctrl-c should ask for confirmation before exiting.
49 48 - md_to_html() nao usa o segundo argumento q. pode retirar-se dos templates?
50 49 - config/logger.yaml ainda é do cherrypy...
51 50 - uniformizar question.py com a de aprendizations...
... ...
serve.py
... ... @@ -9,7 +9,7 @@ import json
9 9 import base64
10 10 import uuid
11 11 # from mimetypes import guess_type
12   -
  12 +import signal
13 13  
14 14 # packages
15 15 import tornado.ioloop
... ... @@ -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 325 # Tornado web server
318 326 # -------------------------------------------------------------------------
319 327 def main():
... ... @@ -370,14 +378,16 @@ def main():
370 378 http_server.listen(8443)
371 379  
372 380 # --- run webserver
373   - logging.info('Webserver running...')
  381 + signal.signal(signal.SIGINT, signal_handler)
374 382  
375 383 try:
  384 + logging.info('Webserver running... (Ctrl-C to stop)')
376 385 tornado.ioloop.IOLoop.current().start() # running...
377   - except KeyboardInterrupt:
  386 + except Exception:
  387 + logging.critical('Webserver stopped.')
378 388 tornado.ioloop.IOLoop.current().stop()
  389 + raise
379 390  
380   - logging.critical('Webserver stopped.')
381 391  
382 392 # -------------------------------------------------------------------------
383 393 if __name__ == "__main__":
... ...