在代码中将timedelta参数转换为整数或字符串。
例如,在DAG任务的PythonOperator中使用timedelta参数:
from datetime import timedelta from airflow import DAG from airflow.operators.python_operator import PythonOperator
def my_task(): # 任务内容
default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2022, 1, 1), 'retries': 1, 'retry_delay': timedelta(minutes=5) }
with DAG('my_dag', default_args=default_args, schedule_interval=timedelta(days=1)) as dag: task = PythonOperator( task_id='my_task', python_callable=my_task, retries=1, retry_delay=timedelta(minutes=5) )
在这种情况下,Airflow无法渲染参数retry_delay,因为不能将timedelta转换为一段文本。解决方法是将timedelta参数转换为整数或字符串。
例如,将retry_delay参数更改为5:
with DAG('my_dag', default_args=default_args, schedule_interval=timedelta(days=1)) as dag: task = PythonOperator( task_id='my_task', python_callable=my_task, retries=1, retry_delay=5 )
或将其更改为字符串:
with DAG('my_dag', default_args=default_args, schedule_interval=timedelta(days=1)) as dag: task = PythonOperator( task_id='my_task', python_callable=my_task, retries=1, retry_delay='{{ timedelta(minutes=5) }}' )