airflow - Python运算符中的气流宏
问题描述
我正在尝试在我的 Python 运算符中使用气流宏,但我不断收到“气流:错误:无法识别的参数:”
所以我正在导入一个具有 3 个位置参数的函数:(sys.argv,start_date,end_date),我希望将start_date和end_date设为Airflow 中的执行日期。
函数参数看起来像这样
def main(argv,start_date,end_date):
这是我在 DAG 中的任务:
t1 = PythonOperator(
task_id='Pull_DCM_Report',
provide_context=True,
python_callable=main,
op_args=[sys.argv,'{{ ds }}','{{ ds }}'],
dag=dag)
解决方案
由于您要传入需要由 Airflow 呈现的日期,因此您需要templates_dict
在 Python 运算符中使用该参数。此字段是 Airflow 将识别为包含模板的唯一字段。
您可以创建自定义 Python 运算符,通过复制现有运算符并将相关字段添加到template_fields
元组中,将更多字段识别为模板。
def main(**kwargs):
argv = kwargs.get('templates_dict').get('argv')
start_date = kwargs.get('templates_dict').get('start_date')
end_date = kwargs.get('templates_dict').get('end_date')
t1 = PythonOperator(task_id='Pull_DCM_Report',
provide_context=True,
python_callable=main,
templates_dict={'argv': sys.argv,
'start_date': '{{ yesterday_ds }}',
'end_date': '{{ ds }}'},
dag=dag)
推荐阅读
- console - 是否可以在 OpenSuse 中以编程方式设置 .app 文件的“可执行”属性?
- netlogo - 使汽车以正确的速度行驶(NetLogo)
- html - 我的 django 项目没有显示正文背景
- vim - 如何在本地 vimrc (.lvimrc) 文件中设置 clang 格式选项?
- php - PHPExcel我只能在单元格中加粗某些单词吗
- credential-providers - 我想显示另一个屏幕以在凭据提供程序中请求 OTP
- solr - 从 solr api 和 solr 仪表板中找到不同的 num,用于相同的 solr 查询
- javascript - 对象扩展运算符作为函数参数
- javascript - 承诺中的 AJAX 请求即使在保护子句之后也会执行
- selenium - 带有 Tor 浏览器的 Python Selenium (Ubuntu)