Airflow 气流如何解析和存储计划间隔

Airflow 气流如何解析和存储计划间隔,airflow,Airflow,我正在开发一项功能,该功能需要安排气流作业的间隔。我没有亲自编写代码来解析DAG文件中的cron表达式,而是一直试图在元数据数据库中找到解析的schedule_interval值,但没有用 有人能给我一个指针,指示气流是如何解析schedule_interval表达式的(例如,位于的文件),以及它在哪里存储解析的值(如果存储了值) 编辑: 上面的schedule_interval表达式是DAG参数schedule_interval,如中所示: dag=dag( “教程”,默认参数=默认参数,计划

我正在开发一项功能,该功能需要安排气流作业的间隔。我没有亲自编写代码来解析DAG文件中的cron表达式,而是一直试图在元数据数据库中找到解析的schedule_interval值,但没有用

有人能给我一个指针,指示气流是如何解析schedule_interval表达式的(例如,位于的文件),以及它在哪里存储解析的值(如果存储了值)

编辑:
  • 上面的schedule_interval表达式是DAG参数schedule_interval,如中所示: dag=dag( “教程”,默认参数=默认参数,计划间隔=“@daily”)

  • 根据,schedule_interval可以是cron表达式、datetime.timedelta对象或诸如“@daily”之类的“预设”之一。由于schedule_interval可以采用多种形式,如果Airflow已经解析并存储了这些值,我不想重新发明轮子并编写代码来解析schedule_interval参数

  • 我正在构建一个系统,通过查询气流元数据数据库,定期检查所有气流作业并总结其状态。尽管并非绝对必要,但了解计划时间间隔会很有用,因为它会显示诸如每个气流作业的信息、过去24小时内预期的dag运行次数以及下一次dag运行的时间

  • 我无法找到schedule\u interval解析值的存储位置,但是我找到了解析schedule\u interval表达式的代码。它位于utils模块()中。

    调度间隔值除了进程本身之外,不存储在任何地方。气流通过或多或少地检查
    NOW()>=(MAX(执行日期、开始日期))+计划间隔来确定何时创建新运行

    如果愿意,您可以使用
    aiffair.models.DAG.following\u schedule
    aiffair.models.DAG.previous\u schedule
    方法以编程方式计算aiffair的
    执行日期


    注意:Airflow使用包计算cron值。

    我不确定我是否理解。你指的是时间间隔表达式吗?另外,访问元数据数据库需要解决什么问题?这里也是,我无法理解您:(尝试在此处编写伪代码以查看您的问题。@tobi6是的,我指的是DAG参数表\u间隔。我编辑了我的问题以回应您的评论。希望这有助于澄清您的问题。谢谢!这可能有助于@tobi6我在此处找不到任何与我的问题直接相关的内容,但我确实认为此页面是gr。)吃学习资源。