Mercurial > piecrust2
changeset 224:4f00bb99400e
serve: Fix exiting the server with `CTRL+C` when the SSE response is running.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 03 Feb 2015 18:51:30 -0800 |
parents | 7decf00eee47 |
children | a75d024ee839 |
files | piecrust/commands/builtin/serving.py piecrust/serving.py |
diffstat | 2 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/commands/builtin/serving.py Tue Feb 03 18:50:58 2015 -0800 +++ b/piecrust/commands/builtin/serving.py Tue Feb 03 18:51:30 2015 -0800 @@ -1,5 +1,5 @@ import logging -from piecrust.serving import Server +from piecrust.serving import Server, _sse_abort from piecrust.commands.base import ChefCommand @@ -48,10 +48,13 @@ if ctx.args.wsgi == 'werkzeug': from werkzeug.serving import run_simple - run_simple(host, port, app, - threaded=True, - use_debugger=debug, - use_reloader=ctx.args.use_reloader) + try: + run_simple(host, port, app, + threaded=True, + use_debugger=debug, + use_reloader=ctx.args.use_reloader) + finally: + _sse_abort.set() elif ctx.args.wsgi == 'gunicorn': from gunicorn.app.base import BaseApplication
--- a/piecrust/serving.py Tue Feb 03 18:50:58 2015 -0800 +++ b/piecrust/serving.py Tue Feb 03 18:51:30 2015 -0800 @@ -26,6 +26,9 @@ logger = logging.getLogger(__name__) +_sse_abort = threading.Event() + + class ServingEnvironment(StandardEnvironment): pass @@ -446,6 +449,9 @@ yield bytes(outstr, 'utf8') break + if _sse_abort.is_set(): + break + try: logger.debug("Polling pipeline status queue...") count += 1