Source code for neat.scheduler.simple

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#
# Copyright (c) 2017 Stephen Bunn (stephen@bunn.io)
# GNU GPLv3 <https://www.gnu.org/licenses/gpl-3.0.en.html>

import time

from .. import const
from ._common import AbstractScheduler


[docs]class SimpleDelayScheduler(AbstractScheduler): """ The scheduler for simple requesters. .. note:: Required, that all subclasses call super initialization """ def __init__(self, delay: float=1.0): """ The SimpleDelayScheduler scheduler initializer. :param delay: The delay to wait in between requests :type delay: float """ super().__init__() self.delay = delay def __repr__(self): """ A string representation of the scheduler object. :returns: A string representation of the scheduler object :rtype: str """ return ( '<{self.name} delay={self.delay}>' ).format(self=self) @property def delay(self) -> float: """ The delay period in between scheduled requests. """ return self._delay @delay.setter def delay(self, delay: float) -> None: """ Sets the scheduler's delay. :param delay: The new delay of the scheduler :type delay: float """ self._delay = float(delay)
[docs] def run(self) -> None: """ Starts the infinite loop for signaling scheduled requests. :returns: Does not return :rtype: None """ self.daemon = True while self.is_alive(): self.signal.send(self) try: time.sleep(self.delay) except KeyboardInterrupt as exc: const.log.debug(( 'scheduler `{self}` was terminated ...' ).format(self=self)) break