Apache Airflow version
2.4.3, 2.5.0
What happened
when use output from task decorator as parameter (external_task_ids) in ExternalTaskSensor, it show up this log:
Broken DAG: [+++++/airflow/dags/TEST_NEW_PIPELINE.py] Traceback (most recent call last):
File "+++++/env3.10.5/lib/python3.10/site-packages/airflow/models/baseoperator.py", line 408, in apply_defaults
result = func(self, **kwargs, default_args=default_args)
File "+++++/env3.10.5/lib/python3.10/site-packages/airflow/sensors/external_task.py", line 164, in __init__
if external_task_ids and len(external_task_ids) > len(set(external_task_ids)):
TypeError: object of type 'PlainXComArg' has no len()
note: +++++ is just a mask for irrelevant information.
What you think should happen instead
this document https://airflow.apache.org/docs/apache-airflow/stable/tutorial/taskflow.html
show that we can use it without any warning, note about it.
found relative problem in https://github.com/apache/airflow/issues/27328
should move all the check in __init__ into poke method.
How to reproduce
from airflow.decorators import dag, task
from airflow.operators.python import get_current_context
from airflow.sensors.external_task import ExternalTaskSensor
from datetime import datetime
configure = {"dag_id": "test_new_skeleton",
"schedule": None,
"start_date": datetime(2022,1,1),
}
@task
def preprocess_dependency() -> list:
return ["random-task-name"]
@dag(**configure)
def pipeline():
t_preprocess = preprocess_dependency()
task_dependency = ExternalTaskSensor(task_id=f"Check_Dependency",
external_dag_id='random-dag-name-that-exist',
external_task_ids=t_preprocess ,
poke_interval=60,
mode="reschedule",
timeout=172800,
allowed_states=['success'],
failed_states=['failed', 'skipped'],
check_existence=True,)
dag = pipeline()
Operating System
REHL 7
Versions of Apache Airflow Providers
No response
Deployment
Virtualenv installation
Deployment details
No response
Anything else
No response
Are you willing to submit PR?
Code of Conduct
Apache Airflow version
2.4.3, 2.5.0
What happened
when use output from task decorator as parameter (external_task_ids) in ExternalTaskSensor, it show up this log:
note: +++++ is just a mask for irrelevant information.
What you think should happen instead
this document https://airflow.apache.org/docs/apache-airflow/stable/tutorial/taskflow.html
show that we can use it without any warning, note about it.
found relative problem in https://github.com/apache/airflow/issues/27328
should move all the check in __init__ into poke method.
How to reproduce
Operating System
REHL 7
Versions of Apache Airflow Providers
No response
Deployment
Virtualenv installation
Deployment details
No response
Anything else
No response
Are you willing to submit PR?
Code of Conduct