Скрипт воздушного потока Python с датой выполнения в op_kwargs - PullRequest
0 голосов
/ 30 апреля 2018

С помощью этого ответа https://stackoverflow.com/a/41730510/4200352 Я выполняю файл python.

Я использую PythonOperator и пытаюсь включить дату выполнения в качестве аргумента, передаваемого в сценарий.

Я полагаю, что могу получить к нему доступ через kwargs ['execute_date'].

Сбой ниже

DAG.py

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta

import sys
import os
sys.path.append(os.path.abspath("/home/glsam/OmegaAPI/airflow/scripts/PyPer_ogi_simple"))
from update_benchmarks import *


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2018, 4, 23),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG('run_pyPer', default_args=default_args)

update_BM_G027 = PythonOperator(
    task_id='update_BM_G027',
    python_callable=update_bmk,
    dag=dag,
    op_kwargs={
        'bmk_code': 'G027',
        'is_hedged': False,
        'from_date': kwargs['execution_date'],
    })

Может быть, мне нужно использовать этот ответ, чтобы получить дату, а затем отправить ее на задание? https://stackoverflow.com/a/36754930/4200352

1 Ответ

0 голосов
/ 30 апреля 2018

Это действительно немного сбивает с толку и не очень хорошо задокументировано.

Вы уже используете PythonOperator.

Теперь просто добавьте опцию

provide_context=True,

и расширите свой вызываемый с помощью указателя, например,

update_bmk(bmk_code, is_hedged, **context)

Теперь в вашей функции у вас будет доступ ко всей информации о задаче, включая дату выполнения, например:

task_instance = context['task_instance']
execution_date = context['execution_date']

Чтобы увидеть полную ссылку на элементы в контексте, см. https://airflow.apache.org/macros.html

Это документы для макросов, но вы можете использовать элементы в контекстном словаре.

...