diff options
Diffstat (limited to 'timeout_decorator/timeout_decorator.py')
-rw-r--r-- | timeout_decorator/timeout_decorator.py | 12 |
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() |