docs: def schedule(self, cron_schedule, base_datetime=None):
          """ Schedules the job to run periodically using Cron syntax. """
  
          logger.debug('Scheduling job {0} with cron schedule {1}'.format(self.name, cron_schedule))
          if not self.state.allow_change_schedule:
              raise DagobahError("job's schedule cannot be changed in state: %s"
                                 % self.state.status)
  
          if cron_schedule is None:
              self.cron_schedule = None
              self.cron_iter = None
              self.next_run = None
  
          else:
              if base_datetime is None:
                  base_datetime = datetime.utcnow()
              self.cron_schedule = cron_schedule
              self.cron_iter = croniter(cron_schedule, base_datetime)
              self.next_run = self.cron_iter.get_next(datetime)
  
          logger.debug('Determined job {0} next run of {1}'.format(self.name, self.next_run))
          self.commit()