def wrapper(*args, **kwargs): LOGGER.info('timer started: for %(func)s to run every %(crontab_expression)s', { 'func': func, 'crontab_expression': self.crontab_expression }) while True: now = get_current_timestamp() next = croniter(self.crontab_expression, now).get_next() delta = next - now LOGGER.info('timer sleep: wake up after %(delta)s seconds', { 'delta': delta }) time.sleep(delta) LOGGER.info('timer woke up') before = time.time() try: func(*args, **kwargs) finally: after = time.time() LOGGER.info('timer work done: in %(elapsed_time)s seconds', { 'elapsed_time': after - before })
def get_next_timestamp(self, now=None): now = now or get_current_timestamp() return croniter(self.crontab_expression, now).get_next(ret_type=float)
def get_next_timestamp(self, now=None): now = now or get_current_timestamp() return now + self.seconds