【问题标题】:Xcom pull returns a NameError on `ti`Xcom pull 在 `ti` 上返回 NameError
【发布时间】:2018-11-16 06:42:16
【问题描述】:

我正在尝试将带有 last_date_task 中的键 last_date 的值推入 xcom,然后在第二个任务 ga_wh_task 中将其从 xcom 中拉出。当我通过运行python dag.py 测试这个 dag 时,它会在这一行返回一个错误,例如:

    provide_context=True, since={{ti.xcom_pull(task_ids="last_date_task", key='last_date')}})
NameError: name 'ti' is not defined

我在这里做错了什么?我尝试使用 task_instance 代替 ticontext['ti'] 而不是 kwargs['ti']

这是 dag 文件:

default_args = {
    'owner': 'me',
    'start_date': dt.datetime(2017, 10, 30),
    'retries': 1,
    'retry_delay': dt.timedelta(minutes=10),
    'provide_context' : True,
}



def get_last_date(**kwargs):
    kwargs['ti'].xcom_push(key='last_date', value='2018-11-15')
    return True



with DAG('ga_mysql_dag2',
         default_args=default_args,
         schedule_interval=None,
         catchup=False,
         ) as dag:

    last_date_task = PythonOperator(task_id='last_date_task', python_callable=get_last_date, provide_context=True)

    ga_wh_task = GoogleAnalyticsReportingToMySqlOperator(task_id='ga_wh_task', google_analytics_conn_id='google_analytics', key_file=key_file,\
                                        view_id=view_id, until=until, dimensions=dimensions, metrics=metrics, database=database,\
                                        table = table, mysql_conn_id = mysql_conn_id,
                                        provide_context=True, since={{ti.xcom_pull(task_ids="last_date_task", key='last_date')}})
    sleep = BashOperator(task_id='sleep', bash_command='sleep 10')

# Dependencies
last_date_task >> ga_warehouse_task >> sleep

【问题讨论】:

    标签: python-3.x airflow-scheduler airflow


    【解决方案1】:

    看起来GoogleAnalyticsReportingToMySqlOperator 是您创建的运算符。

    since 参数应该是字符串。所以改成since="{{ti.xcom_pull(task_ids='last_date_task', key='last_date')}}"

    【讨论】:

    • 试过了。现在我在 last_date....NameError: name 'last_date' is not defined 上有一个 NameError
    • GoogleAnalyticsReportingToMySqlOperator 是我创建的运算符,是的。
    • 试试since="{{ti.xcom_pull(task_ids='last_date_task', key=None)}}"。这应该工作
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多