Как преобразовать DAG Airflow с интервалом расписания cron для запуска в Америке / New_York? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть cronjob, который запускается с интервалом расписания cron 05 */1 * * 1-5.Или, как Crontab Guru говорит: «В 5 минут каждый час в каждый день недели с понедельника по пятницу» (в EST вместо UTC)?

Как я могу преобразовать это в 'America / New_York' с учетом часового пояса Airflow DAG, который будет работать точно так же ?

Я задал предыдущий вопрос о DAG с поддержкой часовых поясов в Airflow, но мне не ясно из ответа или из документации по Airflow, как выполнить переход из DAG с start_date с tzinfo и schedule_interval, имитирующими кронхоб.

В настоящее время я пытаюсь использовать DAG с файлом my_dag.py следующим образом:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
import pendulum

local_tz = pendulum.timezone("America/New_York")

default_args=dict(
    owner = 'airflow',
    start_date=datetime(2018, 11, 7, 13, 5, tzinfo=local_tz), # 1:05 PM on Nov 7
    schedule_interval=timedelta(hours=1),
)

dag = DAG('my_test_dag', catchup=False, default_args=default_args)

op = BashOperator(
    task_id='my_test_dag',
    bash_command="bash -i /home/user/shell_script.sh",
    dag=dag
)

ОднакоDAG никогда не будет назначен.Что я здесь не так делаю?

1 Ответ

0 голосов
/ 21 ноября 2018

Airflow поддерживает использование выражений cron. schedule_interval определяется как аргументы DAG и предпочтительно получает выражение cron в виде объекта str или datetime.timedelta.В качестве альтернативы, вы также можете использовать один из этих «пресетов» cron: None, @once, @hourly, @daily, @weekly, @monthly, @ year.

Как я вижу, понимание часового пояса правильное,но интервал расписания должен быть изменен.

args=dict(
owner = 'airflow',
start_date=datetime(2018, 11, 7, 13, 5, tzinfo=local_tz), # 1:05 PM on Nov 7
)

dag=DAG(dag="dagname_here",
default_args=args,
schedule_interval='05 */1 * * 1-5' #should be string)

ПРИМЕЧАНИЕ : Напоминаем, что если вы запустите группу обеспечения доступности баз данных с интервалом schedule_day, то прогон с отметкой 2016-01-01 будетсрабатывает вскоре после 2016-01-01T23: 59.Другими словами, экземпляр задания запускается после окончания периода, который он охватывает.

Для справки: Планирование воздушного потока

...