aboutsummaryrefslogtreecommitdiff
path: root/timeout_decorator/timeout_decorator.py
diff options
context:
space:
mode:
Diffstat (limited to 'timeout_decorator/timeout_decorator.py')
-rw-r--r--timeout_decorator/timeout_decorator.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/timeout_decorator/timeout_decorator.py b/timeout_decorator/timeout_decorator.py
index 2b3121d..42b6686 100644
--- a/timeout_decorator/timeout_decorator.py
+++ b/timeout_decorator/timeout_decorator.py
@@ -64,9 +64,6 @@ def timeout(seconds=None, use_signals=True, timeout_exception=TimeoutError, exce
"""
def decorate(function):
- if not seconds:
- return function
-
if use_signals:
def handler(signum, frame):
_raise_exception(timeout_exception, exception_message)
@@ -77,6 +74,10 @@ def timeout(seconds=None, use_signals=True, timeout_exception=TimeoutError, exce
if new_seconds:
old = signal.signal(signal.SIGALRM, handler)
signal.setitimer(signal.ITIMER_REAL, new_seconds)
+
+ if not seconds:
+ return function(*args, **kwargs)
+
try:
return function(*args, **kwargs)
finally:
@@ -144,7 +145,8 @@ class _Timeout(object):
kwargs=kwargs)
self.__process.daemon = True
self.__process.start()
- self.__timeout = self.__limit + time.time()
+ if self.__limit is not None:
+ self.__timeout = self.__limit + time.time()
while not self.ready:
time.sleep(0.01)
return self.value
@@ -159,7 +161,7 @@ class _Timeout(object):
@property
def ready(self):
"""Read-only property indicating status of "value" property."""
- if self.__timeout < time.time():
+ if self.__limit and self.__timeout < time.time():
self.cancel()
return self.__queue.full() and not self.__queue.empty()