我正在学习 Apache Airflow 以在我的工作场所实现它,我在尝试将参数传递给这样的功能时偶然发现了一个问题(我遵循了文档)
from airflow import DAG
import pendulum
from datetime import datetime, timedelta
from airflow.operators.python_operator import PythonOperator
args = {
    "owner": "airflow",
    "start_date": pendulum.datetime(year=2020, month=10, day=5, tzinfo='Asia/Shanghai'),
    "retries": 5,
    "retry_delay": timedelta(minutes=3)
}
dag = DAG(
    "example_dag_v2",
    schedule_interval="@daily",
    default_args=args
)
def my_mult_function(number):
    return number*number
mult_task = PythonOperator(
    task_id = 'mult_task',
    provide_context=True,
    python_callable=my_mult_function,
    op_kwargs={'number': 5},
    dag = dag
)
mult_task
Run Code Online (Sandbox Code Playgroud)
我不断收到此错误
类型错误:my_mult_function() 得到了一个意外的关键字参数“conf”
我哪里做错了?
解决方案:
所以我找到了解决方案,但仍然不明白为什么解决方案是
def my_mult_function(number, **kwargs):
    return number*number
Run Code Online (Sandbox Code Playgroud)
我在参数上传递了 **kwargs,它有效!但我仍然不明白为什么我需要通过 **kwargs ?
sav*_*vsr 15
您已设置provide_context=TruesoPythonOperator将执行上下文发送到您的python_callable. 所以通用捕获所有关键字参数,**kwargs解决了这个问题。
https://github.com/apache/airflow/blob/v1-10-stable/airflow/operators/python_operator.py#L108。
如果您不打算使用上下文中的任何内容,则设置provide_context=False.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5911 次  |  
        
|   最近记录:  |