Fix error handling for subprocesses.

Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
This commit is contained in:
Daniel Folkinshteyn 2010-08-08 00:39:51 -04:00 committed by James McCoy
parent 7504c646b7
commit 9fc7ec28b4
1 changed files with 7 additions and 2 deletions

View File

@ -73,8 +73,11 @@ def process(f, *args, **kwargs):
q = multiprocessing.Queue()
def newf(f, q, *args, **kwargs):
r = f(*args, **kwargs)
q.put(r)
try:
r = f(*args, **kwargs)
q.put(r)
except Exception as e:
q.put(e)
targetArgs = (f, q,) + args
p = callbacks.CommandProcess(target=newf,
args=targetArgs, kwargs=kwargs)
@ -87,6 +90,8 @@ def process(f, *args, **kwargs):
v = q.get(block=False)
except Queue.Empty:
v = "Nothing returned."
if isinstance(v, Exception):
v = "Error: " + str(v)
return v
class UrlSnarfThread(world.SupyThread):