code: def call_next(self):
          
          if self.handle is not None:
              self.handle.cancel()
          next_time = self.get_next()
          self.handle = self.loop.call_at(next_time, self.call_next)
          self.call_func()
docs: Set next hop in the loop. Call task