**Apache Airflow version**: 2.0.0, LocalExecutor

**Environment**: Docker on Win10 with WSL, official Python3.8 image

**What happened**:

When a DAG is running, and I delete task from the running DAG, the scheduler fails. When using Docker, upon automatic restart of the scheduler, the scheduler just fails again, perpetually.

![image](https://user-images.githubusercontent.com/46958547/103558919-a89f6e80-4eb5-11eb-8521-19b04ee3c690.png)

Note: I don't _know_ if the task itself was running at the time, but I would guess it was.

**What you expected to happen**:

The scheduler should understand that the task is not part of the DAG anymore and not fail.

**How to reproduce it**:

- Create a DAG with multiple tasks
- Let it run
- While running, delete one of the tasks from the source code
- See the scheduler break
airflow/models/dagrun.py
start_date = Column(UtcDateTime, default=timezone.utcnow)
    end_date = Column(UtcDateTime)
    _state = Column('state', String(50), default=State.RUNNING)
    run_id = Column(String(ID_LEN))
    creating_job_id = Column(Integer)
    external_trigger = Column(Boolean, default=True)
    run_type = Column(String(50), nullable=False)
    conf = Column(PickleType)
    
    last_scheduling_decision = Column(UtcDateTime)
    dag_hash = Column(String(32))
    dag = None
    __table_args__ = (
        Index('dag_id_state', dag_id, _state),
        UniqueConstraint('dag_id', 'execution_date'),
        UniqueConstraint('dag_id', 'run_id'),
        Index('idx_last_scheduling_decision', last_scheduling_decision),
    )
    task_instances = relationship(
        TI,
        primaryjoin=and_(TI.dag_id == dag_id, TI.execution_date == execution_date),  
        foreign_keys=(dag_id, execution_date),
        backref=backref('dag_run', uselist=False),
    )
    DEFAULT_DAGRUNS_TO_EXAMINE = airflow_conf.getint(
        'scheduler',
        'max_dagruns_per_loop_to_schedule',
        fallback=20,
    )
    def __init__(