Basic functionality and API call to ESV.org is complete along with the parsing of the returned object to something more presentable.
This commit is contained in:
26
timeout.py
Normal file
26
timeout.py
Normal file
@ -0,0 +1,26 @@
|
||||
import errno
|
||||
import os
|
||||
import signal
|
||||
import functools
|
||||
|
||||
class TimeoutError(Exception):
|
||||
pass
|
||||
|
||||
def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):
|
||||
def decorator(func):
|
||||
def _handle_timeout(signum, frame):
|
||||
raise TimeoutError(error_message)
|
||||
|
||||
@functools.wraps(func)
|
||||
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 wrapper
|
||||
|
||||
return decorator
|
||||
Reference in New Issue
Block a user