Starts the scheduler to check for scheduled calls and execute them
        at the correct time.

        Args:
          sleep_time (float): The amount of time to wait in seconds between
            each loop iteration. This prevents the scheduler from consuming
            100% of the host's CPU. Defaults to 0.2 seconds.

        Returns:
          None

def scheduler(self, sleep_time=0.2):
        """Starts the scheduler to check for scheduled calls and execute them
        at the correct time.

        Args:
          sleep_time (float): The amount of time to wait in seconds between
            each loop iteration. This prevents the scheduler from consuming
            100% of the host's CPU. Defaults to 0.2 seconds.

        Returns:
          None

        """

        while self.listening:
            # If we have any scheduled calls, execute them and remove them from
            # our list of scheduled calls.
            if self.scheduled_calls:
                timestamp = time.time()
                self.scheduled_calls[:] = [item for item in self.scheduled_calls
                                           if not self.time_reached(timestamp, item)]
            time.sleep(sleep_time)

        logger.info("Shutting down the call scheduler...")