我有一个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从未调度。我在这里做错了什么?
答案 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