【问题标题】:airflow dag problem in run - run schedule in loop运行中的气流 dag 问题 - 循环运行计划
【发布时间】:2021-05-22 10:47:25
【问题描述】:

我在计划中为远程 ssh 上的运行命令创建此 dag。

from datetime import timedelta
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
from airflow.contrib.hooks.ssh_hook import SSHHook as sscon
from airflow.contrib.operators.ssh_operator import SSHOperator


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': days_ago(0),
    'email': ['e@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    #'retries': 1,
    #'retry_delay': timedelta(minutes=10),
}
dag = DAG(
    'ssh_second',
    default_args=default_args,
    description='A simple bash DAG LAB',
    schedule_interval=timedelta(minutes=1),
    tags=['test'],
)

sshcon = sscon(remote_host="192.168.1.250", username="user", password="password", port=22)

t1 = BashOperator(
    task_id='echo1',
    bash_command='echo "simple task! by dag" ',
    dag=dag,
)

t5 = SSHOperator(
    task_id="remote-connection",
    command="/bin/date >> /home/user/date.txt && echo 'from airflow' >> /home/user/date.txt",
    ssh_hook=sshcon,
    dag=dag)

t1 >> t5

它工作正常,但气流每秒都在运行,而且势不可挡。

tree view of loop run

不知道问题出在哪里!

【问题讨论】:

    标签: airflow schedule airflow-scheduler


    【解决方案1】:

    您的schedule_interval 设置为每分钟:schedule_interval=timedelta(minutes=1),这就是导致 DAG 执行如此频繁的原因。将schedule_interval 更新为不那么频繁的间隔。

    另外,我强烈建议将start_date 修改为静态值而不是动态值(例如days_ago(0))。当我开始使用 Airflow 时,guide 和其他人非常有用。设置静态 start_date 后,如果您不希望 DAG 从 start_date 到当前时间执行“缺失”运行,则可以设置 catchup=False

    【讨论】:

    • 请指导我如何每 1 分钟运行一次 dag?
    • @EhsanGholami 当您创建 DAG 对象时,您现在正在代码中执行此操作:schedule_interval=timedelta(minutes=1)
    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多