### 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.
)
            tasks = self.task_dict
            self.log.debug("starting dagrun")
            
            
            
            while dr.state == DagRunState.RUNNING:
                session.expire_all()
                schedulable_tis, _ = dr.update_state(session=session)
                for s in schedulable_tis:
                    s.state = TaskInstanceState.SCHEDULED
                session.commit()
                
                all_tis = set(dr.get_task_instances(session=session))
                scheduled_tis = {x for x in all_tis if x.state == TaskInstanceState.SCHEDULED}
                ids_unrunnable = {x for x in all_tis if x.state not in State.finished} - scheduled_tis
                if not scheduled_tis and ids_unrunnable:
                    self.log.warning("No tasks to run. unrunnable tasks: %s", ids_unrunnable)
                    time.sleep(1)
                triggerer_running = _triggerer_is_healthy()
                for ti in scheduled_tis:
                    try:
                        add_logger_if_needed(ti)
                        ti.task = tasks[ti.task_id]
                        _run_task(ti=ti, inline_trigger=not triggerer_running, session=session)
                    except Exception:
                        self.log.exception("Task failed; ti=%s", ti)
        return dr
    @provide_session
    def create_dagrun(