diff options
| author | jeanpouget-abadie <jean.pougetabadie@gmail.com> | 2014-12-05 12:09:54 -0500 |
|---|---|---|
| committer | jeanpouget-abadie <jean.pougetabadie@gmail.com> | 2014-12-05 12:09:54 -0500 |
| commit | 67772e10f297d23e8d99b3901d044a3bb3345214 (patch) | |
| tree | 75ef6f67d7279a64c9ce1cb425e2edcb4f38ce11 /jpa_test/timeout.py | |
| parent | 011a965b4d36ef4a9d42ab945a402f8cc602f496 (diff) | |
| download | cascades-67772e10f297d23e8d99b3901d044a3bb3345214.tar.gz | |
timeout file added
Diffstat (limited to 'jpa_test/timeout.py')
| -rw-r--r-- | jpa_test/timeout.py | 22 |
1 files changed, 22 insertions, 0 deletions
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 |
