Start the periodic runner

def start(self):
        """
        Start the periodic runner
        """
        if self._isRunning:
            return

        if self._cease.is_set():
            self._cease.clear()  # restart

        class Runner(threading.Thread):
            @classmethod
            def run(cls):
                nextRunAt = cls.setNextRun()

                while not self._cease.is_set():
                    if datetime.now() >= nextRunAt:
                        self._run()
                        nextRunAt = cls.setNextRun()

            @classmethod
            def setNextRun(cls):
                # return datetime.now() + timedelta(seconds=self._interval)
                return self._interval.nextRunAt()

        runner = Runner()
        runner.setDaemon(True)
        runner.start()
        self._isRunning = True