如何将具有cron计划间隔的Airflow DAG转换为在美国/纽约运行?

时间:2018-11-19 16:45:35

标签: python cron airflow

我有一个cronjob,它以cron计划间隔05 */1 * * 1-5运行。或如Crontab Guru所说:“从星期一到星期五,在每周的每一天的每个小时的第5分钟。”(使用EST而不是UTC)?

如何将其转换为“美国/纽约” 时区感知 Airflow DAG,其运行方式完全相同

我问了previous question关于Airflow中时区感知DAG的问题,但是在答案或Airflow文档中我不知道如何从具有start_date的DAG中使用{ {1}}和模仿{cronjob的tzinfo

我目前正尝试将DAG与schedule_interval文件一起使用,如下所示:

my_dag.py

但是,DAG从未调度。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

Airflow支持使用cron表达式。 schedule_interval 被定义为DAG参数,并且最好接收cron表达式作为str或datetime.timedelta对象。另外,您也可以使用以下cron“预设”之一:无,@ once,@ hourly,@ daily,@ weekly,@ monthly,@ yearly。

如我所见,时区感知是正确的,但应更改时间表间隔。

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_interval上运行DAG,则在2016-01-01T23:59之后不久将触发标记为2016-01-01的运行。换句话说,作业实例涵盖的时间段结束后,便开始启动。

以供参考:Airflow Scheduling