【问题标题】:extract parameters from BashOperator in Airflow从 Airflow 中的 BashOperator 中提取参数
【发布时间】:2018-09-13 21:38:45
【问题描述】:

我有以下运算符:

import = BashOperator(
    task_id='import',
    bash_command="""python3 script.py `{{ var.value.run_value }}`  'file.json'""",
    dag=dag)

当我查看渲染模板时,我看到:

python3 script.py `2018-09-13 11:53:38.725089`  'file.json'

到目前为止很棒。 但是我的脚本似乎不适用于此输入:

if __name__ == '__main__':
    if str(sys.argv[1]):
        time_value = str(sys.argv[1])[:-7]  # from 2018-09-13 11:01:18.287705 to 2018-09-13 11:01:18
    else:
        time_value = '1900-01-01 00:00:00'
    requestedDate = time_value.split(' ', 1)[0]          #From 2018-08-20 15:00:00  get only 2018-08-20
    requestedTime = (time_value.split(' ', 1)[1])[:-3]   #From 2018-08-20 15:00:00  get only 15:00
    pathConfigFile = (sys.argv[2])

这不起作用。

我想要的是:

time_value  =  YYYY-MM-DD HH:MM:SS
requestedDate = YYYY-MM-DD
requestedTime = HH:MM:SS
pathConfigFile = 2nd parameter given.

气流向我展示:

 {bash_operator.py:101} INFO - SyntaxError: invalid syntax 

另外,我什至无法打印输入。 当我尝试将没有 Airflow 的代码作为纯 python 脚本时,我没有任何问题。

我应该注意。 Airflow 在Python 2.7 下运行,但脚本在Python 3 下执行

有什么问题?

【问题讨论】:

    标签: airflow


    【解决方案1】:

    您似乎在反引号中引用了宏,Bash 将其解释为想要执行内容。您应该切换到单引号。

    您的渲染输出应如下所示:

    python3 script.py '2018-09-13 11:53:38.725089'  'file.json'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-31
      • 2018-11-20
      • 2019-07-23
      相关资源
      最近更新 更多