Apache Airflow(2.0.0b1)-动态创建任务并在函数中访问kwargs

Apache Airflow(2.0.0b1)-动态创建任务并在函数中访问kwargs,airflow,Airflow,我使用的是ApacheAirflow 2.0.0.0b1。我有一个EmailOperator,我想动态更改它的一些参数。具体来说,我希望访问kwargs['ti'] 下面是我的代码 ... # [START get_email_operator] def get_email_operator(**kwargs): export_file_path = kwargs['ti'].xcom_pull(key='LUMA_TERMED_DRIVERS_OUTPUT_CSV') emai

我使用的是ApacheAirflow 2.0.0.0b1。我有一个EmailOperator,我想动态更改它的一些参数。具体来说,我希望访问
kwargs['ti']

下面是我的代码

...
# [START get_email_operator]
def get_email_operator(**kwargs):
    export_file_path = kwargs['ti'].xcom_pull(key='LUMA_TERMED_DRIVERS_OUTPUT_CSV')
    email_subject = 'Termed Drivers - ' + date_string
    return EmailOperator(
        task_id="get_email_operator",
        to=['somone@somwhere.net'],
        subject=email_subject,
        files=[export_file_path,],
        html_content='<br>',
        dag=dag)
...

print_date_op >> ... >> get_email_operator()
如何在不是任务但将返回任务的函数中引用
kwargs


非常感谢您的帮助。

这是一个python问题,而不是问题。函数调用不会立即失败,因为
None
是有效的字典。不过,您需要将调用更改为pass
ti=
,作为参数设置为
get\u email\u operator
,如下所示:

print_date_op >> ... >> get_email_operator(ti="something")
但是如果要这样做,函数的内容会更清楚地显示为:

def get_email_operator(ti):
    export_file_path = ti.xcom_pull(key='LUMA_TERMED_DRIVERS_OUTPUT_CSV')

这是一个python问题,而不是一个气流问题。函数调用不会立即失败,因为
None
是有效的字典。不过,您需要将调用更改为pass
ti=
,作为参数设置为
get\u email\u operator
,如下所示:

print_date_op >> ... >> get_email_operator(ti="something")
但是如果要这样做,函数的内容会更清楚地显示为:

def get_email_operator(ti):
    export_file_path = ti.xcom_pull(key='LUMA_TERMED_DRIVERS_OUTPUT_CSV')