From 9a7b5db96e70819756ee8a862affb5bdd931610e Mon Sep 17 00:00:00 2001 From: Steven Robertson Date: Fri, 13 Jan 2012 20:57:35 -0500 Subject: [PATCH] Allow a keyboard interrupt to flush the queue --- worker.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/worker.py b/worker.py index 607e13e..1ae2e36 100644 --- a/worker.py +++ b/worker.py @@ -193,14 +193,18 @@ def run_jobs(r, rev, jobs): retry.append(i) return sidx, gpu_time, ftag, jpg - for sidx, job in enumerate(jobs): - while len(pending) > QUEUE_LENGTH: - yield pull(True) - ret = pull(False) - if ret: - yield ret - pending[sidx] = job - push(sidx, job) + try: + for sidx, job in enumerate(jobs): + while len(pending) > QUEUE_LENGTH: + yield pull(True) + ret = pull(False) + if ret: + yield ret + pending[sidx] = job + waiting.append(sidx) + push(sidx, job) + except KeyboardInterrupt: + print 'Interrupt received, flushing already-dispatched frames' while pending: yield pull(True) @@ -229,4 +233,3 @@ if __name__ == "__main__": work('192.168.1.3') else: client(sys.argv[1], sys.argv[2:]) -