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: