**Description**
In its current shape the ExternalTaskSensor accepts either a single task_id or None to poll for the completion of a dag run. We have a use case where a dependent dag should poll for only certain list of tasks in the upstream dag. One option is to add N ExternalTaskSensor nodes if there are N nodes to be dependent on but those will be too many Sensor Nodes in the dag and can be avoided if the ExternalTaskSensor can accept a list of task_ids to poll for. 


**Use case / motivation**

We have a upstream dag that updates a list of hive tables that is further used by a lot of downstream dags. This dag updates 100s of hive tables but some of the downstream dag depends only upon 10-20 of these tables, There are multiple dags which depends upon varied list of hive tables from the upstream dag. 


**Are you willing to submit a PR?**

Yes, we are willing to submit a PR for this

**Related Issues**

Not that I am aware of . I did a search on the issue list. 

airflow/sensors/external_task.py
dag_to_wait = session.query(DagModel).filter(DagModel.dag_id == self.external_dag_id).first()
        if not dag_to_wait:
            raise AirflowException(f'The external DAG {self.external_dag_id} does not exist.')
        if not os.path.exists(dag_to_wait.fileloc):
            raise AirflowException(f'The external DAG {self.external_dag_id} was deleted.')
        if self.external_task_id:
            refreshed_dag_info = DagBag(dag_to_wait.fileloc).get_dag(self.external_dag_id)
            if not refreshed_dag_info.has_task(self.external_task_id):
                raise AirflowException(
                    f'The external task {self.external_task_id} in '
                    f'DAG {self.external_dag_id} does not exist.'
                )
        self._has_checked_existence = True
    def get_count(self, dttm_filter, session, states) -> int: