我的任务代码如下。
from airflow.models import DAG
from airflow.operators import BashOperator
from datetime import datetime, timedelta
rootdir = "/tmp/airflow"
default_args = {
'owner': 'max',
'depends_on_past': False,
'start_date': datetime.now(),
'email': ['max@test.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG('test3', default_args=default_args,
schedule_interval='*/2 * * * *')
t1 = BashOperator(
task_id='test3-task1',
bash_command='date >> {rootdir}/test3-task1.out'.format(rootdir=rootdir),
owner='max',
dag=dag)
t2 = BashOperator(
task_id='test3-task2',
bash_command='whoami',
retries=3,
owner='max',
dag=dag)
然后我用linux的'airflow'用户运行命令“airflow test test3 test3-task2 2016-07-25”。输出“whoami”的结果是“气流”。 但我希望输出结果是任务的“拥有者”。
我错了什么?
由于
以下是输出结果。
[2016-07-25 11:22:37,716] {bash_operator.py:64} INFO - 临时脚本位置:/ tmp / airflowtmpoYNJE8 // tmp / airflowtmpoYNJE8 / test3-task2U1lpom
[2016-07-25 11:22:37,716] {bash_operator.py:65}信息 - 运行命令:whoami
[2016-07-25 11:22:37,722] {bash_operator.py:73}信息 - 输出:
[2016-07-25 11:22:37,725] {bash_operator.py:77}信息 - 气流
[2016-07-25 11:22:37,725] {bash_operator.py:80} INFO - 命令已退出,返回码为0
答案 0 :(得分:0)
看起来您不想尝试做的事情是不受支持的。查看bash_operator和BaseOperator的源代码,不幸的是,在执行任务之前都没有尝试更改用户。
答案 1 :(得分:0)
您可以使用" run_as_user" default_args
下的参数default_args = {
'owner': 'max',
'depends_on_past': False,
'start_date': datetime.now(),
'email': ['max@test.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'run_as_user': 'max'
}