### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
"""
        Triggers the callbacks with the given context.
        :param callbacks: List of callbacks to call
        :param context: Context to pass to all callbacks
        :param dag_id: The dag_id of the DAG to find.
        """
        if callbacks and context:
            for callback in callbacks:
                cls.logger().info("Executing dag callback function: %s", callback)
                try:
                    callback(context)
                except Exception:
                    cls.logger().exception("failed to invoke dag state update callback")
                    Stats.incr("dag.callback_exceptions", tags={"dag_id": dag_id})
    def get_active_runs(self):
        """
        Return a list of dag run execution dates currently running.
        :return: List of execution dates
        """
        runs = DagRun.find(dag_id=self.dag_id, state=DagRunState.RUNNING)
        active_dates = []
        for run in runs:
            active_dates.append(run.execution_date)
        return active_dates
    @provide_session
    def get_num_active_runs(self, external_trigger=None, only_running=True, session=NEW_SESSION):