【问题标题】:Airflow delay between catchup instances追赶实例之间的气流延迟
【发布时间】:2018-06-27 15:37:05
【问题描述】:

我有以下 dag 设置来运行 2015 年的追赶。对于每个执行日期,任务实例在一分钟内完成。但是,第二天的任务仅在 5 分钟窗口内开始。例如。上午 10:00、上午 10:05、上午 10:10 等。我没有看到为任务实例指定的 5 分钟间隔。如何修改 dag 以在前一个实例完成后立即触发? 我正在使用 Airflow 版本 1.9.0

default_args = {
   'owner': 'ssnehalatha',
   'email': ['ssnehalatha@metromile.com'],
   'depends_on_past': False,
   'start_date': datetime(2015, 1, 1),
   'on_failure_callback': jira_failure_ticket,
   'trigger_rule': 'all_done',
   'retries': 1,
   'pool': 'python_sql_pool'
}

dag = DAG('daily_dag',
           schedule_interval='15 1 * * 0,1,2,3,4,5',
           default_args=default_args,
           dagrun_timeout=timedelta(hours=24),
           catchup=True)

【问题讨论】:

    标签: airflow airflow-scheduler


    【解决方案1】:

    如果我没记错的话,这与airflow.cfg中的调度程序设置有关。

    [scheduler]
    
    # The scheduler constantly tries to trigger new tasks (look at the
    # scheduler section in the docs for more information). This defines
    # how often the scheduler should run (in seconds).
    scheduler_heartbeat_sec = 60
    

    编辑

    您提到的两个参数的文档(来自https://github.com/apache/incubator-airflow/blob/master/UPDATING.md):

    min_file_process_interval应该在多长时间后从文件系统中获取更新的 DAG。

    dag_dir_list_interval 调度程序重新列出 DAG 目录内容的频率。如果在开发 +dag 时,它们没有被拾取,请查看这个数字并在必要时减少它。

    在我看来,它们更多地用于检测更改和新的 DAG 文件,而不是执行 任务

    【讨论】:

    • 谢谢。我在 [scheduler] 下的 airflow.cfg 中看到两个属性设置为 5 分钟。我相信第一个导致延迟。将在这里测试和更新结果。 min_file_process_interval = 300 dag_dir_list_interval = 300
    • 将 min_file_process_interval 更新为 60 让我的追赶作业每分钟都被触发。即使每 5 分钟触发一次任务实例,我也有 scheduler_heartbeat_sec = 5。
    • 更具体地说,早些时候,如果 2015-01-01 的 dag 在上午 10:00 开始执行并在上午 10:01 完成,则 2015-01-02 的 dag 将仅被触发在上午 10:05 进行追赶时。但是在设置 min_file_process_interval=60 后,只要前一天的 dag 执行完成就会触发下一天的 dag,或者在前一天的 dag 开始后 1 分钟触发,以防前一天的 dag 在不到一分钟的时间内完成。
    猜你喜欢
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2017-09-08
    • 1970-01-01
    • 2012-03-05
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多