如果 start_date 是未来、过去或现在,则 Airflow DAG 无法正确独立运行

问题描述 投票:0回答:3

今天是 2023 年 9 月 8 日。我在容器中运行 Airflow。 Worker、Scheduler 等都已开启。 我有以下 DAG:

from airflow import DAG
from datetime import datetime
from airflow.providers.postgres.operators.postgres import PostgresOperator

with DAG('user_processing',
     start_date=datetime(2023,10,12),
     schedule_interval='@daily',
     catchup=False) as dag:

     create_table = PostgresOperator(
        task_id='create_table',
        postgres_conn_id='postgres',
        sql='''
        CREATE TABLE IF NOT EXISTS users (
            firstname TEXT NOT NULL,
            lastname TEXT NOT NULL,
            country TEXT NOT NULL,
            username TEXT NOT NULL,
            password TEXT NOT NULL,
            email TEXT NOT NULL
        );
        '''
    )

如果我将来添加start_date并触发手动运行,任务会被标记为成功,但不会运行(需要00:00:00秒才能运行,我故意在SQL中犯了一个错误,以检查是否会出错出去)。 enter image description here 如果我添加过去或现在的开始日期(例如:

start_date=datetime(2022, 1, 1)
),任务将被标记为失败。日志为空。我确信任务中没有错误,因为我可以从 Scheduler-1 容器运行它,没有任何问题。 enter image description here

我很困惑可能出了什么问题。请帮忙

python docker airflow
3个回答
1
投票

所以,最后问题又回来了,我意识到我有权限问题。 一开始,当我尝试在 /dags 文件夹中创建 DAG 时,收到一条缺少权限的错误。 当运行

ls -la
命令时,它看起来像这样(忽略混淆部分,它确实不相关): enter image description here

因此,为了创建 DAG 文件,我运行了以下命令:

sudo chown -R betelgeitze ~/data_eng/airflow/dags
现在
ls -la
看起来像这样: enter image description here 现在,根据您启动 Docker-compose 的时间以及更改权限的时间,DAG 可能无法运行。就我而言,有时它有效,有时无效,我无法弄清楚它停止工作后的确切步骤。但是,如果您遇到我在这个问题中描述的问题,您只需将权限更改回来即可。就我而言,它是:
sudo chown -R 50000 ~/data_eng/airflow/dags
(不要忘记添加气流用户的名称而不是 50000,并将路径更改为文件夹所在位置:
sudo chown -R <airflow username> <path>


0
投票

从气流导入DAG 从日期时间导入日期时间

with DAG('user_processing',start_date=datetime(2023,1,1),schedule_interval="@daily", catchup=False) 作为 dag:


-1
投票

对于每天运行的 DAG,我通常将 start_date 参数定义如下:

from airflow.utils.dates import days_ago

default_args = {
   ...,
   'start_date': day_ago(1),
   ...
}

DAG 将在您部署时运行一次,并且过去的执行不会排队。请注意,如果您的 DAG 的周期不是每天,您将需要调整天数。

此外,如果你想按需运行DAG,我建议你将schedule_interval设置为None,而不是在start_date中设置未来的日期,这是没有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.