Mercurial > piecrust2
comparison piecrust/serving.py @ 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 | a951cd4ef361 |
comparison
equal
deleted
inserted
replaced
223:7decf00eee47 | 224:4f00bb99400e |
---|---|
24 | 24 |
25 | 25 |
26 logger = logging.getLogger(__name__) | 26 logger = logging.getLogger(__name__) |
27 | 27 |
28 | 28 |
29 _sse_abort = threading.Event() | |
30 | |
31 | |
29 class ServingEnvironment(StandardEnvironment): | 32 class ServingEnvironment(StandardEnvironment): |
30 pass | 33 pass |
31 | 34 |
32 | 35 |
33 class ServeRecord(object): | 36 class ServeRecord(object): |
444 logger.debug("Closing pipeline status SSE, timeout reached.") | 447 logger.debug("Closing pipeline status SSE, timeout reached.") |
445 outstr = 'event: pipeline_timeout\ndata: bye\n\n' | 448 outstr = 'event: pipeline_timeout\ndata: bye\n\n' |
446 yield bytes(outstr, 'utf8') | 449 yield bytes(outstr, 'utf8') |
447 break | 450 break |
448 | 451 |
452 if _sse_abort.is_set(): | |
453 break | |
454 | |
449 try: | 455 try: |
450 logger.debug("Polling pipeline status queue...") | 456 logger.debug("Polling pipeline status queue...") |
451 count += 1 | 457 count += 1 |
452 data = self.status_queue.get(True, self.interval) | 458 data = self.status_queue.get(True, self.interval) |
453 except queue.Empty: | 459 except queue.Empty: |