Airflow 由于执行日期和开始日期,无法运行任务

每当我尝试运行DAG时,它将处于运行状态,但任务将不会运行。我已将开始日期设置为datetime.today(),日程间隔设置为“***”。手动触发运行将启动dag,但由于以下原因,任务将无法运行: 执行日期为2017-09-13T00:00:00,但在任务开始日期2017-09-13T16:20:30.363268之前 我尝试了各种计划间隔组合(例如每天的特定时间),以及等待dag被触发和手动触发。似乎什么都不起作用。尝试重新启动调度程序,这对我来说很有效 谷歌发送我到这里,我和你有同样的问题

Airflow 气流HttpSensor-won';行不通

我正在尝试使用以下代码在气流中创建HttpSensor: wait_to_launch = HttpSensor( task_id="wait-to-launch", endpoint='http://' + socket.gethostname() + ":8500/v1/kv/launch-cluster?raw", response_check=lambda response: True if 'oui'==response.content else False,

Airflow 气流:只有一个任务的简单DAG永远不会完成

我制作了一个非常简单的DAG,如下所示: from datetime import datetime from airflow import DAG from airflow.operators.bash_operator import BashOperator cleanup_command = "/home/ubuntu/airflow/dags/scripts/log_cleanup/log_cleanup.sh " dag = DAG( 'log_cleanup', descript

Airflow 单元测试中气流1.9的测试Dag运行

我已经实现了运行单个dag的测试用例,但它在1.9中似乎不起作用,这可能是因为在1.8中引入了更严格的池 . 我正在尝试运行以下测试用例: from airflow import DAG from airflow.operators.dummy_operator import DummyOperator from airflow.operators.python_operator import PythonOperator class DAGTest(unittest.TestCase):

Airflow 气流-如何重新加载操作员和插件

我对Airflow是个新手,我不知道当我更改一个操作符/插件的代码时如何重新加载它。 我正在使用LocalExecutor和一个外部数据库(MySql)。 我已尝试重新启动Web服务器和计划程序,但在导入DAG时仍然出现相同的错误: File "/home/ec2-user/airflow/dags/extractor.py", line 2, in <module> from airflow.contrib.operators.emr_spark_plugin im

Airflow 气流日志未加载

当我的dag中的节点出现故障时,我想查看日志,但页面只是保持渲染(符号),并且没有实际加载日志 是否有其他方法可以检查日志或更正此问题?在与“dags”目录相同的位置有一个名为“logs”的目录, 默认值:/etc/afflow/logs 其中有与DAG、任务和日期同名的目录。你可以看看那里。 示例:/etc/afflow/logs/controller/trigger/2018-12-10T17:34:19.234871+00:00

Airflow 在气流DAG中生成要单独处理的多个任务

我的DAG中有一些部分生成列表,我无法将这些列表分解为单独的任务,以便在下游单独处理 下面是一个伪示例: def push(**kwargs): # """Pushes an XCom without a specific target""" for n in range(10): kwargs['ti'].xcom_push(key=f'vals', value=n) def puller(**kwargs): ti = kwargs['ti']

Airflow 没有这样的文件或目录/afflow/xcom/return.json

创建了一个包含/afflow/xcom/return.json 所有子目录上的chmod+x 由于日志显示它找不到文件或目录(chmod+x) 这是日志 [2019-03-18 20:32:07,007] {logging_mixin.py:95} INFO - [2019-03-18 20:32:07,007] {pod_launcher.py:166} INFO - Running command... cat /airflow/xcom/return.json [2019-03-18

Airflow 气流不运行任务

我已经为Airflow编写了一个python任务。当我把我的DAG装入气流时,它显示的一切都很好。一旦我为我的DAG触发一次运行,它将创建一次运行并切换到Successed,而不运行我的任务。Web服务器和调度程序都在运行,日志中没有任何内容。 任务在运行时甚至没有状态(甚至没有跳过) 如果我直接使用气流测试更新\u dags work 2019-01-01运行我的任务,它运行得很好 这是我的DAG: 来自气流导入DAG 从afflow.operators.python_operator导入Py

Airflow 是否清除和回填计划每小时运行的DAG的特定实例?

我们有一个按小时运行的DAG,任务更新和覆盖BigQuery中的日期分区表 在对这些表的查询和/或模式进行了调整之后,我们希望回填几天的现有分区,但回填所有运行是一种巨大的浪费,因为每小时的运行只会覆盖同一分区24次,然后再继续到第二天 我们可以使用airflow list_dag_runs列出所有运行并过滤掉每天的最后一次运行,但是是否有一种方法可以每天只回填/清除这些最后的运行,而不必每天重新运行24个实例 气流清除和气流回填命令具有指定开始和结束日期的选项,但不指定具体的实例时间,因此它们

Airflow 基于表中依赖项的动态dag创建

我正在从包含要执行的任务的表中读取数据,并且还将依赖项存储在同一个表中。我正在将表格读入熊猫数据框 我的任务3依赖于任务1和任务2,而任务4依赖于任务3完成 对于索引,odf.iterrows()中的行: dag_id=行[“dag_id”] 任务id=行[“任务id”] 任务名称=行[“任务名称”] 脚本名称=行[“脚本名称”] 如果行[“依赖\u ID”]不是无: dependents=行[“DEPENDENT_ID”]。拆分(“|”) 打印(家属) t1=OracleOperator(

Airflow 什么是气流环境下的任务并行性?

任务并行通常是指多个任务在相同或不同的数据集上运行。但是,当我在afflow.cfg文件中更改parallelism参数时,在气流的上下文中是什么呢 例如,假设我想对一批数据运行数据处理器。是否将并行度设置为32,将数据拆分为32个子批次,并在这些子批次上运行相同的任务 或者,如果最初有32批数据,而不是1批,我可以在所有32批上运行数据处理器(即32个任务同时运行)。设置不会在DAG中“分割数据”。 从: 并行性:此变量控制要执行的任务实例数 在整个气流组中同时运行 如果您想并行执行一个任务,

Airflow db初始化后的气流2.0警告

我使用pip命令在ubuntu上部署了Airflow 2.0。已从1.10.13迁移到2.0。但在db inint之后,我得到了以下警告。请说明为什么我会收到这些警告。 我尝试运行示例DAG,它们运行成功 WARNI [airflow.providers_manager] The provider for package 'apache-airflow-providers-http' could not be registered from because providers for that

Airflow 气流操作器导入不';好像不行

我是新的气流,需要在这一个方向。。。 我正在创建第一个使用子dag的dag并导入子dag操作符 `from airflow.operators.subdag import SubDagOperator` 然而,我不断得到流动的错误 “损坏的DAG:[/usr/local/aiffort/dags/POC_Main_DAG.py]没有名为'aiffort.operators.subdag'的模块” 我还尝试导入虚拟操作符,但得到了相同的错误。 另一方面,以下操作员似乎是按预期导入的 from a

Airflow 气流-获取dag运行的开始时间

是否有可能获得气流中dag的实际启动时间?我所说的开始时间是指dag的第一个任务开始运行的确切时间 我知道我可以使用宏来获取执行日期。如果作业是使用trigger_dag运行的,这就是我所说的开始时间,但是如果作业是按每日计划运行的,那么{{execution_date}}返回昨天的日期 我还尝试将datetime.now().isoformat()放在dag代码主体中,然后将其传递给任务,但这似乎返回了任务第一次调用的时间,而不是dag本身启动的时间。我按照您所述的方式: 我所说的开始时间是指

Airflow 气流计划程序持续崩溃,数据库连接错误(Google Composer)

我已经使用GoogleComposer一段时间了(Composer-0.5.2-airflow-1.9.0),气流调度器出现了一些问题。调度器容器有时会崩溃,它可能会进入锁定状态,无法启动任何新任务(数据库连接出错),因此我必须重新创建整个Composer环境。这一次,出现了一个CrashLoopBackOff,调度程序盒无法再重新启动。这个错误与我以前遇到的非常相似。这是Stackdriver的回溯: Traceback (most recent call last): File "/us

Airflow 获取有关\u失败\u回调上下文的异常详细信息

是否有任何方法可以获取故障回调时气流上的异常详细信息 我注意到它不是上下文的一部分。我想创建一个通用的异常处理机制,它可以发布有关错误的信息,包括有关异常的详细信息。我现在已经设法触发/执行回调并发布到Slack,但无法发布异常详细信息 谢谢。我认为可能无法在回调中获取异常详细信息 #悲观地处理回调 尝试: 如果self.state==state.UP\u FOR\u RETRY和task.on\u RETRY\u回调: 任务。在\u重试\u回调(上下文) 如果self.state==state

Airflow 如何设置仅在特定dag_运行期间使用的变量

如何设置在特定dag_运行期间使用的变量。我知道在xcom中设置值,但并不是所有我使用的操作符都支持xcom。我也不想将值存储到变量数据存储中,以防在当前dag运行时另一个dag运行开始,需要存储不同的值。问题不清楚,但从我的推断,我将尝试消除您的疑虑 并非我使用的所有操作符都支持xcom 显然,您将xcom与其他构造弄错了,因为xcom功能是BaseOperator本身定义的功能和(它是所有操作器的父项) 我也不想将值存储到变量数据存储中, 如果当前dag运行时另一个dag运行开始,则 需

Airflow 触发器规则无\u跳过的未按预期工作

我有一种情况,我需要使用无触发规则,但它的行为异常。这是我的设想 分支任务B, 如果为真T1>>T2>>joinTask 如果为false F1>>F2>>JointTask 如果B中的条件为false,则跳过T1,但执行T2,因为触发规则为“全部完成”(即使T1失败,我也需要T2)。所以我把T2改成“无跳过” 我希望在T1成功或失败或上游失败时触发T2(根据文档)。相反,T2会在dag启动时立即触发。它是在任何其他任务之前执行的。这似乎是最近才在气流1.10.5中修复的: 尝试将气流更新为1

如何在airflow中添加管理员用户?

如何在airflow中添加管理员用户 我想使用简单的Web身份验证。 若我按照文档中的描述添加用户,那个么该用户不是管理员 来自文档的代码: import airflow from airflow import models, settings from airflow.contrib.auth.backends.password_auth import PasswordUser user = PasswordUser(models.User()) user.username = 'new_us

Airflow 在变量和测试运行中捕获gcloud composer运行响应

我目前正在建造一条通过GCP的气流管道,我目前遇到了两个障碍 我想捕获gcloud composer运行响应。例如,如果我跑步 gcloud composer环境运行一些\u环境\ --地点us-west2\ 列表\u DAG--sd/home/airflow/gcs/data/test 结果显示该文件夹中的DAG。但是,无法在变量中捕获这些值。我尝试过使用$()和backticks,但是当我echo时,它是空的 我想在/home/aiffair/gcs/data/test文件夹中运行dag,而

Airflow 如何缩短在GCP Composer上检测新Dag的时间?(气流)

我在GCP(Airflow)上创建了一个Composer集群,它工作得很好,但对于即时任务来说速度很慢。我在本地文件中创建了下一个DAG: import datetime from airflow import models from pprint import pprint as pp from airflow.contrib.kubernetes import secret from airflow.contrib.operators import kubernetes_pod_operat

Airflow 设置为未在此池中排队的池的任务

气流任务未排队到正确的池 子dag任务占用当前池中所有正在运行的插槽,因此我为子dag任务创建了一个单独的池 然后将此池分配给子DAG brand\u subdag\u操作符=subdag操作符( 任务标识=品牌标识, subdag=品牌_subdag, 池='subdags\u池', ) 但是这些任务一直在default\u池中调度,而不是在新的subdag\u池中调度 我希望如果任务的池设置为subdag\u pool,任务将在此池中排队 有关

Airflow 每两周安排一次气流作业

我有一个要求,我想安排一个气流作业每隔周五。然而,问题是我无法想出如何为此编写时间表 我不想为此有多份工作 我试过这个 '0 0 1-7,15-21 * 5 但是它不起作用,每天从1点到7点,从15点到21点 从shubham的回答中,我意识到我们可以有一个蟒蛇操作员,它可以为我们跳过任务。我试图实现这个解决方案。然而,这似乎不起作用 因为在2周内进行测试太困难了。这就是我所做的 我计划DAG每5分钟运行一次 然而,我正在编写python操作符skip althernate任务(非常类似于我

Airflow TimeDelta传感器从计划间隔延迟

我有一份13:30的工作。其中第一项任务需要将近1小时才能完成,之后我们需要等待15分钟。所以,我使用的是Timedeltasensor,如下所示 waitfor15min = TimeDeltaSensor( task_id='waitfor15min', delta=timedelta(minutes=15), dag=dag) 然而,在日志中,它显示了计划间隔+15分钟,如下所示 [2020-11-05 20:36:27,013] {ti

Airflow 连接密码解密

我想解密气流连接的密码(从连接表中获取值)。是否有任何方法可以解密密码值。您可以执行以下操作: from airflow.hooks.base_hook import BaseHook connection = BaseHook.get_connection("conn_name") conn_password = connection.password conn_login = connection.login 你可以做: from airflow.hooks.base_

Airflow 气流回填澄清

我刚刚开始使用Airbnb,但我仍然不清楚如何/何时完成回填 具体来说,有两个用例让我感到困惑: 如果我运行airflow scheduler几分钟,停止它一分钟,然后重新启动它,我的DAG似乎在前30秒左右运行额外的任务,然后继续正常运行(每10秒运行一次)。这些额外的任务是“回填”的任务,在早期运行中无法完成吗?如果是这样,我将如何告诉airflow不要回填这些任务 如果我运行气流调度器几分钟,然后运行气流清除我的教程,然后重新启动气流调度器,它似乎会运行大量额外任务。这些任务是否也会以某种

Airflow 气流-取决于过去和触发规则是否相同?

在airflow.models.BaseOperator中。您有两个默认参数: 取决于\u过去=False和触发规则=u'all\u success' 据博士说 依赖于过去(bool)–当设置为true时,任务实例将按顺序运行,同时依赖上一个任务的计划成功 触发器规则(str)–定义用于触发任务的依赖项的规则 这不是一回事吗?我不明白为什么会有冗余参数。不,两者完全不同。depends_on_pass(布尔值)用于检查是否运行任务,具体取决于任务的上一次DAG运行(上次运行)。触发器\规则用于根

Apache Airflow 1.9安装在GitHub的debian 8上

由于debian 9上的命令行:pip install git,我从GitHub安装了ApacheAirflow 1.9+https://github.com/apache/incubator-airflow.git@v1-9-稳定 但是,我在期间遇到了一个由Fernet引起的错误,您知道如何解决这个问题吗 INFO [alembic.runtime.migration] Running upgrade 947454bf1dff -> d2ae31099d61, Increase

Airflow 从Cloud Composer运行java Google数据流作业

目前,我们正在Kubernetes上使用自己安装的Airflow版本,但我们的想法是在Cloud Composer上迁移。我们使用Airflow来运行DataFlowJavaOperator的定制版本的数据流作业(使用插件),因为我们需要执行jar中不自包含的java应用程序。因此,我们基本上运行一个启动命令的bash脚本: java -cp jar_folder/* MainClass 所有jar依赖项都存储在所有工作程序之间的共享磁盘中,但Composer中缺少此功能,我们被迫使用云存储来

Airflow 每重试一次,重置一次执行超时

我希望任务在启动12小时后失败,我已将执行超时设置为12小时: 操作员是SQLSensor,因为它有时会断开连接并失败,所以我将重试次数设置为3 但是,由于重试,任务在每次超时后都会重新开始 1:任务在10:00开始 2:22:00超时 3:然后任务在22:01再次开始 我不想这样,如何设置所有重试的总超时 log_sensor = SqlSensor( task_id='log_sensor', conn_id='mssql_etl', sql=my_query,

Airflow 如何管理具有不同开始日期的一百万个任务?

我有大约一百万个任务使用相同的python函数。每个都需要使用不同的开始日期和参数运行 早些时候,我问了一个关于如何在一个DAG下运行两个这样的任务的问题。然而,当任务变得很多时,答案是不可伸缩的。(参见链接和注释) 问题 如何在Airflow上以可伸缩的方式运行一百万(或任何大数量)或下的任务,其中每个任务都来自相同的python函数,但具有不同的开始日期和参数 注释 这些任务不需要在主机上运行(因为它们源于python函数)。实际上,它们很可能以分布式方式在Kubernetes集群上运行(o

Airflow 月末的气流DAG计划

我想运行气流计划(v1.9.0)。 我的DAG需要在每个月底运行,但我不知道如何编写设置 my_dag=dag(dag_id=dag_id), catchup=False, 默认参数=默认参数, 附表(间隔时间为30 0 31**),, 开始日期=日期时间(2019年7月1日)) 但这在没有31号的一个月内是行不通的,对吗? 如何编写一个schedule\u interval以在每个月末运行?您可以通过将L放在schedule\u intervalcron表达式的月份位置来执行此操作 sche

Airflow 为什么气流会因信息而崩溃;任务已退出,返回代码为-9“;?

我有一个大的DAG正在运行,但是它只是因为那个消息而停止,我无法找出文件上的错误 如果这有区别的话:我的气流在一个有舵图的牧场主里运行。我想这通常是内存不足的例外。我想了一种方法来减少所有内存的大小。第一次尝试是加载一些行,而不是所有行: serverCursor=conn.cursor(“serverCursor”) serverCursor.execute(f'''select*from{ORIGIN\u SCHEMA}.{table};'') df=[] 尽管如此: records=ser

Airflow iam.gserviceaccount.com没有storage.Bucket.get访问权限

我正在尝试使用DAG任务将文件存储到GCS中。 我已在airflow connections页面的“keyfile json”字段中指定了我的服务帐户信息。但是,在运行dag时,即使GCP服务帐户具有“存储对象管理员”角色,我仍收到一个权限错误: 错误-403获取:airflow@xstack-developers-237307.iam.gserviceaccount.com没有storage.Bucket.get访问weather_api的权限。 回溯(最近一次呼叫最后一次): 文件“/Use

Airflow 气流-已删除的任务实例从UI中的DAG搜索结果页中删除后未重新运行

我们正在运行大量的DAG,因此,每个日历日期都有数千个任务实例。我们偶尔会有几天失败,我们正试图尽可能有效地重新安排这些日期 我们尝试使用的方法是使用UI的搜索功能缩小失败日期的完整列表,然后单击“删除”(据我所知,这相当于“清除”任务实例),如此屏幕截图所示 我们使用catchup=True自动重新运行已清除的日期,但在检查应重新运行这些已删除日期的各个DAG后,这些日期将不再显示。甚至不在“清除”或“运行”状态。日期根本不存在。例如,我们删除了2020年3月30日和2020年3月31日,因

Airflow 我可以关闭气流实验API吗?

是否可以禁用气流实验API?我已经搜索了airflow.cfg的示例,但没有看到任何可以实现它的内容。也许可以使用来完成一些事情,但我不确定是什么。由于Airflow 1.10.11,实验性API默认拒绝所有请求(请参阅) 如果运行的是旧版本的Airflow,则可以设置 auth_backend = airflow.api.auth.backend.deny_all

Airflow 如何运行测试中定义的气流DAG?

我正在尝试编写一个测试用例,其中我: 实例化一组(Python)运算符(使用unittest.mock.patch修补它们的一些依赖项) 将这些操作符安排在DAG中 跑那狗 对各种模拟下游的调用进行断言 我从中看出,运行DAG并不像调用DAG那么简单。run-我应该实例化一个local\u客户机,并在该客户机上调用trigger\u DAG。但是,生成的代码,不接受任何允许我传入手动构造的DAG的参数-因此我看不到如何使用local\u client运行此DAG 我在这里看到了几个选项:

Airflow 气流-如何获取所有未来运行日期

我正在安排一个气流作业。然而,为了验证我是否安排了正确的作业,我需要查看它将来何时运行 气流有下面的命令,让我下一次运行。然而,对于某些用例来说,这还不够。例如,我计划每隔周五运行一次作业。我如何验证这一点 airflow next_execution <dag_id> 下一次执行时的气流 有没有办法,我可以得到这个dag运行的所有未来日期。或者至少两个?钩下croniter使用的气流,用于。在文档的示例之后,这可以工作如下(例如,考虑DAG在每星期五晚上12点运行,我们的基准日

Airflow Aiflow跳过单_成功触发规则上的任务

我使用的是one_success触发器规则,这样,如果父任务中的任何一个通过,那么子任务将按预期运行。然而,当两者都失败时,我就遇到了问题。在这种情况下,子任务将被跳过,而不是失败。下面是dag的实现 import logging from airflow import DAG from datetime import datetime, timedelta from airflow.operators.hive_operator import HiveOperator from airflow

Airflow 编写器/服务器在可抢占虚拟机上运行数据流作业

我在GCP中有一个Composer/Airflow实例(版本Composer-1.12.2-Airflow-1.10.10),它可以正常运行其当前作业(大约40个DAG,每个DAG中有6个数据流作业和18个其他较短的任务)。 数据流作业从数据流模板(普通模板,而不是flex模板)运行,通常需要大约20分钟才能完成,部分是并行的。我从一条python开始 如果我使用Dataflow选项,实例就会阻塞。在CPU使用率较高的情况下,它最多只能在前20分钟内安排每分钟一个数据流作业。这会导致任务不断累积

Airflow 一次成功的两个父级的气流触发规则-工作进程能否在每个父级之后运行';她成功了吗?

我听起来像一个>>[B,C]>>D 其中,D是一个成功触发 只会跑一次 是否有一种方法可以让我在每次成功后都能运行D(而不是同时等待两者) 或者我必须设置两个不同的DAG? A>>B>>D 和 A>>C>>D 不管答案如何 …由于D不能并行运行,我假设我应该将D分配给一个特定的池 其中池只有一个工作插槽 谢谢 有人有良好的复杂触发经验吗?您不需要有两个不同的DAG。对于D,确实需要两个操作符。 这将在不使用池的情况下解决问题: with DAG( dag_id="my_dag&q

Airflow 使用jinja模板中的气流连接

我试图使用环境变量将DB参数传递给BashOperator,但我找不到任何文档/示例来说明如何使用来自Jinja模板的连接 所以我在寻找类似于变量的东西 echo {{ var.value.<variable_name> }} echo{{var.value.} 气流不提供此类宏。 但是,您可以创建自定义宏来解决此问题 连接示例: 创建宏: def get_host(conn_id): connection = BaseHook.get_connection(conn_i

在Apache Airflow 2.0 TaskFlow DAG中使用Python虚拟操作符

我正在试图弄清楚如何在我正在创建的DAG中使用pythonVirtualNVOperator,使用Apache Airflow 2.0.1中的TaskFlow API 示例代码 以下是我的示例DAG的外观: from time import sleep from airflow.decorators import dag, task from airflow.utils.dates import days_ago from airflow.operators.python import Pyth

Airflow 气流升级\u检查FERNET \u关键问题

我正在运行命令airflow upgrade\u check在迁移到airflow 2.0之前进行检查 我认为费内特问题是个问题: Fernet is enabled by default The fernet mechanism is enabled by default to increase the security of the default installation. Problems: 1. fernet_key in airflow.cfg must be explic

Airflow 是否可以在气流中进行更快的回填?

关于这一点,我已经搜索了很多,但找不到任何实质性的信息。我的问题是我有一个DAG,它应该回填2017年3月的数据 因此,我将开始日期定为:“2017年3月1日”。我还提供了每日的计划时间间隔。现在,我知道我的DAG将按照给定的时间表从2017年3月开始运行。但是,如果我的dag每天都按照计划进行,则需要2年以上的时间才能达到当前日期 我不能等待2年才能得到过去的数据。我希望我的DAG尽快完成回填,以便我的DAG能够赶上当前时间并开始安排每天的工作。我怎样才能做到这一点?我是否可以为某个较高的数字

  1    2   3   4   5   6  ... 下一页 最后一页 共 39 页