我正在开发一项功能,该功能需要Airflow作业的schedule_intervals。我一直没有尝试自己编写代码来解析DAG文件中的cron表达式,而是尝试在Airflow元数据数据库中找到已解析的schedule_interval值,但无济于事。
有人可以给我一个指导,以了解Airflow如何解析schedule_interval表达式(例如,位于https://github.com/apache/incubator-airflow的文件),以及解析后的值存储在哪里(如果存储了值)?
dag = DAG( 'tutorial',default_args = default_args,schedule_interval ='@ daily')
根据this documentation page,schedule_interval可以是cron表达式,datetime.timedelta对象或“ @daily”之类的“预设”之一。因为schedule_interval可以采用多种形式,所以如果Airflow已经解析并存储了这些值,我不想重新发明轮子并编写代码来解析schedule_interval参数。
答案 0 :(得分:0)
我无法找到Airflow在哪里存储了schedule_interval的解析值,但是我确实找到了用于解析schedule_interval表达式的代码。它位于utils模块(https://github.com/apache/incubator-airflow/blob/master/airflow/utils/dates.py)中。
答案 1 :(得分:0)
schedule_interval
值不存储在进程本身之外的任何位置。气流通过或多或少地检查NOW() >= (MAX(execution_date, start_date)) + schedule_interval
如果需要,您可以使用execution_date
和airflow.models.DAG.following_schedule
方法以编程方式计算Airflow的airflow.models.DAG.previous_schedule
值。
注意:Airflow使用croniter
程序包来计算外部cron值。