docs: def StartHunt(hunt_id):
    """Starts a hunt with a given id."""
  
    hunt_obj = data_store.REL_DB.ReadHuntObject(hunt_id)
    num_hunt_clients = data_store.REL_DB.CountHuntFlows(hunt_id)
  
    if hunt_obj.hunt_state != hunt_obj.HuntState.PAUSED:
      raise OnlyPausedHuntCanBeStartedError(hunt_obj)
  
    data_store.REL_DB.UpdateHuntObject(
        hunt_id,
        hunt_state=hunt_obj.HuntState.STARTED,
        start_time=rdfvalue.RDFDatetime.Now(),
        num_clients_at_start_time=num_hunt_clients,
    )
    hunt_obj = data_store.REL_DB.ReadHuntObject(hunt_id)
  
    if hunt_obj.args.hunt_type == hunt_obj.args.HuntType.STANDARD:
      _ScheduleGenericHunt(hunt_obj)
    elif hunt_obj.args.hunt_type == hunt_obj.args.HuntType.VARIABLE:
      _ScheduleVariableHunt(hunt_obj)
    else:
      raise UnknownHuntTypeError("Invalid hunt type for hunt %s: %r" %
                                 (hunt_id, hunt_obj.args.hunt_type))
  
    return hunt_obj