气流安排的芹菜任务之间的延迟



我试图通过在Airflow中使用celeryExecutor来运行以下简单的工作流程:

default_args = {
    'depends_on_past': False,
    'start_date': datetime.now(),
}
dag = DAG('HelloWorld', default_args=default_args, schedule_interval=None)
default_args=default_args)
t1 = BashOperator(
    task_id='task_1',
    bash_command='echo "Hello World from Task 1"; sleep 0.1',
    dag=dag)
t2 = BashOperator(
    task_id='task_2',
    bash_command='echo "Hello World from Task 2"; sleep 0.2',
    dag=dag)
t2.set_upstream(t1)

但是,它在task_1和task_2之间始终有 ~5 秒的延迟。以下是气流.cfg快照:

[scheduler]
# Task instances listen for external kill signal (when you clear tasks
# from the CLI or the UI), this defines the frequency at which they should
# listen (in seconds).
job_heartbeat_sec = 0.1
# 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 = 1

看起来芹菜是导致延迟的原因,但是,如果为真,如何从气流配置或 API 设置芹菜工人心跳间隔(或池化速率(?

作为批处理调度程序,Airflow 目前不保证超低延迟。该项目的目标是使大规模亚分钟延迟成为可能,但在较大的环境中,这种情况通常会达到几分钟。

如果延迟约为 1 分钟,则执行 1-2 秒的链任务是没有意义的。通常,气流任务的持续时间应以分钟为单位,而不是以秒为单位(但也有例外(。Airflow 不是 Amazon Lambda。

可能可以微调并说<= 5秒,但是随着系统扩展,这将变得不可能提供这些保证。

相关内容

  • 没有找到相关文章

最新更新