code: def add_cron(self, client, event, seconds="*", minutes="*", hours="*"):
          
          for cron in self.crons:
              if cron.event == event:
                  _log.warning("Cron '%s' is already registered.", event)
                  return True
  
          _log.info("Registering cron for '%s'.", event)
          cron = Cron(event, seconds, minutes, hours)
          self.crons.append(cron)
          return True
docs: Add a cron entry.
  
          The arguments for this event are:
              1. The name of the event to dispatch when the cron fires.
              2. What seconds to trigger on, as a timespec (default "*")
              3. What minutes to trigger on, as a timespec (default "*")
              4. What hours to trigger on, as a timespec (default "*")
  
          Timespecs may be omitted in reverse order of frequency - if hours
          is omitted, the previous timespecs will be applied every hour. If
          both hours and minutes are omitted, the seconds timespec will be
          applied every minute of every hour, and if all timespecs are omitted,
          the event will fire each second.
  
          Timespecs are strings in the following formats:
  
              Plain integer - specifies that exact value for the unit.
              "?"   - specifies a random value from 0 to the unit max.
              "?/X" - specifies all multiples of X for this unit, randomly offset
                      by a fixed amount (e.g. ?/15 might become 4,19,34,49).
              "*"   - specifies all values for the unix from 0 to max.
              "*/X" - specifies all multiples of X for the unit.
  
          Any number of these can be combined in a comma-separated list.
          For instance, "*/15" would be the same as "0,15,30,45" if used
          in the seconds field.