Как мне запустить задачу с владельцем, а не с владельцем оболочки в AIRFLOW

Код моей задачи следующий.

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': ['[email protected]'],
    '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)

Затем я запускаю команду «airflow test test3 test3-task2 2016-07-25» с пользователем linux «airflow». Результатом вывода whoami является «воздушный поток». Но надеюсь, что выходной результат - «хозяин» задачи.

Что я не так?

Спасибо

Ниже приводится выходной результат.

[2016-07-25 11: 22: 37,716] {bash_operator.py:64} ИНФОРМАЦИЯ - Временное расположение скрипта: / 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} ИНФОРМАЦИЯ - Команда завершена с кодом возврата 0


person Max.H    schedule 26.07.2016    source источник


Ответы (2)


Вы можете использовать параметр run_as_user в default_args

default_args = {
    'owner': 'max',
    'depends_on_past': False,
    'start_date': datetime.now(),
    'email': ['[email protected]'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'run_as_user': 'max'
}
person Oleg    schedule 09.02.2018

Не похоже, что то, что вы пытаетесь сделать, поддерживается. Изучая исходный код для bash_operator и BaseOperator, ни один из них не пытается изменить пользователей до выполнения задачи, к сожалению.

person highlycaffeinated    schedule 19.10.2016
comment
Спасибо за Ваш ответ. - person Max.H; 20.10.2016