src/commands.py: make subprocesses raise an error on timeout, rather than return a string

Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
This commit is contained in:
Daniel Folkinshteyn 2011-08-12 16:28:50 -04:00 committed by James McCoy
parent f310350335
commit 6a9af819a3

View File

@ -61,6 +61,10 @@ def thread(f):
f(self, irc, msg, args, *L, **kwargs) f(self, irc, msg, args, *L, **kwargs)
return utils.python.changeFunctionName(newf, f.func_name, f.__doc__) return utils.python.changeFunctionName(newf, f.func_name, f.__doc__)
class ProcessTimeoutError(Exception):
"""Gets raised when a process is killed due to timeout."""
pass
def process(f, *args, **kwargs): def process(f, *args, **kwargs):
"""Runs a function <f> in a subprocess. """Runs a function <f> in a subprocess.
@ -85,7 +89,7 @@ def process(f, *args, **kwargs):
p.join(timeout) p.join(timeout)
if p.is_alive(): if p.is_alive():
p.terminate() p.terminate()
return "%s aborted due to timeout." % (p.name,) raise ProcessTimeoutError, "%s aborted due to timeout." % (p.name,)
try: try:
v = q.get(block=False) v = q.get(block=False)
except Queue.Empty: except Queue.Empty: