【问题标题】:Airflow DAGs tasks not running when i run DAG despite tasks working fine when i test themAirflow DAGs 任务在我运行 DAG 时未运行,尽管在我测试它们时任务工作正常
【发布时间】:2020-08-01 22:06:33
【问题描述】:

我在代码中定义了以下 DAG:

from datetime import timedelta, datetime
import airflow
from airflow import DAG
from airflow.operators.docker_operator import DockerOperator
from airflow.contrib.operators.ecs_operator import ECSOperator

default_args = {
    'owner': 'airflow',
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'start_date': datetime(2018, 9, 24, 10, 00, 00)
}

dag = DAG(
    'data-push',
    default_args=default_args,
    schedule_interval='0 0 * * 1,4',
)    


colors = ['blue', 'red', 'yellow']
for color in colors:
    ECSOperator(dag=dag,
            task_id='data-push-for-%s' % (color),
            task_definition= 'generic-push-colors',
            cluster= 'MY_ECS_CLUSTER_ARN',
            launch_type= 'FARGATE',
            overrides={
                'containerOverrides': [
                    {
                        'name': 'push-colors-container',
                        'command': [color]
                    }
                ]
            },
            region_name='us-east-1',
            network_configuration={
                    'awsvpcConfiguration': {
                           'securityGroups': ['MY_SG'],
                           'subnets': ['MY_SUBNET'],
                           'assignPublicIp': "ENABLED"
                       }
               }, 
    )

这应该会创建一个包含 3 个任务的 DAG,每个任务对应我的颜色列表中的每种颜色。

这看起来不错,当我运行时:

airflow list_dags

我看到我的 dag 列出来了:

data-push

当我跑步时:

airflow list_tasks data-push

我看到我的三项任务按应有的方式显示:

data-push-for-blue
data-push-for-red
data-push-for-yellow

然后我通过在终端中输入以下内容来测试运行我的一项任务:

airflow run data-push data-push-for-blue 2017-1-23

这会运行任务,我可以看到它出现在我的 ECS 集群中的 aws 仪表板上,所以我知道任务在我的 ECS 集群上运行并且数据被成功推送并且一切都很好。

现在,当我尝试从 Airflow UI 运行 DAG 数据推送时,我遇到了问题。

我跑:

airflow initdb

接着是:

airflow webserver

现在进入 localhost:8080 的气流 UI。

我在 dag 列表中看到 dag 数据推送,单击它,然后要测试运行整个 dag,我单击“触发 DAG”按钮。我没有添加任何配置 json,然后单击“触发器”。然后,DAG 的树视图在树结构的右侧显示一个绿色圆圈,似乎表明 DAG 正在“运行”。但是绿色圆圈只是在那里停留了很长时间,当我手动检查我的 ECS 仪表板时,我发现没有实际运行的任务,因此在从 Airflow UI 触发 DAG 后没有发生任何事情,尽管当我从 CLI 手动运行它们时这些任务正在工作。

如果这很重要,我正在使用 SequentialExecutor。

关于为什么在从 CLI 运行单个任务时触发 DAG 不起作用,我的两个主要理论是,也许我在定义 dag 的 python 代码中遗漏了一些东西(可能是因为我没有指定任何依赖项任务?)或者我没有运行气流调度程序,但如果我从气流用户界面手动触发 DAGS,我不明白为什么调度程序需要运行,为什么它不会向我显示这样的错误是个问题。

有什么想法吗?

【问题讨论】:

    标签: airflow amazon-ecs


    【解决方案1】:

    听起来你没有取消暂停: 在 Web UI 的左上角或使用 cli 切换 On/Off 开关:airflow unpause <dag_id>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多