Send the full traceback with any exceptions in the queue process

This commit is contained in:
Joseph Schorr 2014-10-08 14:18:41 -04:00
parent bb9502ee77
commit 6007789480
2 changed files with 10 additions and 2 deletions

View file

@ -31,9 +31,15 @@ class QueueFile(object):
if isinstance(result, Exception):
self._closed = True
self.raised_exception = True
handled = False
for handler in self._exception_handlers:
handler(result)
handled = True
if handled:
return
raise result
self._buffer += result

View file

@ -4,6 +4,8 @@ import multiprocessing
import os
import time
import gipc
import sys
import traceback
logger = multiprocessing.log_to_stderr()
logger.setLevel(logging.INFO)
@ -42,8 +44,8 @@ def _run(get_producer, queues, chunk_size, args):
while True:
try:
data = producer(chunk_size) or None
except Exception as ex:
data = ex
except Exception:
data = Exception("".join(traceback.format_exception(*sys.exc_info())))
for queue in queues:
try: