From 67772e10f297d23e8d99b3901d044a3bb3345214 Mon Sep 17 00:00:00 2001 From: jeanpouget-abadie Date: Fri, 5 Dec 2014 12:09:54 -0500 Subject: timeout file added --- jpa_test/timeout.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 jpa_test/timeout.py (limited to 'jpa_test/timeout.py') diff --git a/jpa_test/timeout.py b/jpa_test/timeout.py new file mode 100644 index 0000000..52d7d92 --- /dev/null +++ b/jpa_test/timeout.py @@ -0,0 +1,22 @@ +from functools import wraps +import errno +import os +import signal + +def timeout(seconds=10, error_message=os.strerror(errno.ETIME)): + def decorator(func): + def _handle_timeout(signum, frame): + raise Exception(error_message) + + def wrapper(*args, **kwargs): + signal.signal(signal.SIGALRM, _handle_timeout) + signal.alarm(seconds) + try: + result = func(*args, **kwargs) + finally: + signal.alarm(0) + return result + + return wraps(func)(wrapper) + + return decorator -- cgit v1.2.3-70-g09d2