每当我尝试运行DAG时,它将处于运行状态,但任务将不会运行。我已将开始日期设置为datetime.today(),日程间隔设置为“***”。手动触发运行将启动dag,但由于以下原因,任务将无法运行:
执行日期为2017-09-13T00:00:00,但在任务开始日期2017-09-13T16:20:30.363268之前
我尝试了各种计划间隔组合(例如每天的特定时间),以及等待dag被触发和手动触发。似乎什么都不起作用。尝试重新启动调度程序,这对我来说很有效 谷歌发送我到这里,我和你有同样的问题
我正在尝试使用以下代码在气流中创建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,
我制作了一个非常简单的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
我已经实现了运行单个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是个新手,我不知道当我更改一个操作符/插件的代码时如何重新加载它。
我正在使用LocalExecutor和一个外部数据库(MySql)。
我已尝试重新启动Web服务器和计划程序,但在导入DAG时仍然出现相同的错误:
File "/home/ec2-user/airflow/dags/extractor.py", line 2, in <module>
from airflow.contrib.operators.emr_spark_plugin im
当我的dag中的节点出现故障时,我想查看日志,但页面只是保持渲染(符号),并且没有实际加载日志
是否有其他方法可以检查日志或更正此问题?在与“dags”目录相同的位置有一个名为“logs”的目录,
默认值:/etc/afflow/logs
其中有与DAG、任务和日期同名的目录。你可以看看那里。
示例:/etc/afflow/logs/controller/trigger/2018-12-10T17:34:19.234871+00:00
我的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']
创建了一个包含/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
我有一个用例,其中Im位于for循环中,需要动态填充HttpSensor任务中的字段
我尝试使用以下语法:
方法1失败:
s = 'sensor_task_sd_{0}'.format(d)
sensor_task_sd = HttpSensor(
task_id=s,
http_conn_id='ss_api',
endpoint="/rest/v1/pipeline/{{t
我已经为Airflow编写了一个python任务。当我把我的DAG装入气流时,它显示的一切都很好。一旦我为我的DAG触发一次运行,它将创建一次运行并切换到Successed,而不运行我的任务。Web服务器和调度程序都在运行,日志中没有任何内容。
任务在运行时甚至没有状态(甚至没有跳过)
如果我直接使用气流测试更新\u dags work 2019-01-01运行我的任务,它运行得很好
这是我的DAG:
来自气流导入DAG
从afflow.operators.python_operator导入Py
我们有一个按小时运行的DAG,任务更新和覆盖BigQuery中的日期分区表
在对这些表的查询和/或模式进行了调整之后,我们希望回填几天的现有分区,但回填所有运行是一种巨大的浪费,因为每小时的运行只会覆盖同一分区24次,然后再继续到第二天
我们可以使用airflow list_dag_runs列出所有运行并过滤掉每天的最后一次运行,但是是否有一种方法可以每天只回填/清除这些最后的运行,而不必每天重新运行24个实例
气流清除和气流回填命令具有指定开始和结束日期的选项,但不指定具体的实例时间,因此它们
我正在从包含要执行的任务的表中读取数据,并且还将依赖项存储在同一个表中。我正在将表格读入熊猫数据框
我的任务3依赖于任务1和任务2,而任务4依赖于任务3完成
对于索引,odf.iterrows()中的行:
dag_id=行[“dag_id”]
任务id=行[“任务id”]
任务名称=行[“任务名称”]
脚本名称=行[“脚本名称”]
如果行[“依赖\u ID”]不是无:
dependents=行[“DEPENDENT_ID”]。拆分(“|”)
打印(家属)
t1=OracleOperator(
任务并行通常是指多个任务在相同或不同的数据集上运行。但是,当我在afflow.cfg文件中更改parallelism参数时,在气流的上下文中是什么呢
例如,假设我想对一批数据运行数据处理器。是否将并行度设置为32,将数据拆分为32个子批次,并在这些子批次上运行相同的任务
或者,如果最初有32批数据,而不是1批,我可以在所有32批上运行数据处理器(即32个任务同时运行)。设置不会在DAG中“分割数据”。
从:
并行性:此变量控制要执行的任务实例数
在整个气流组中同时运行
如果您想并行执行一个任务,
我使用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
我是新的气流,需要在这一个方向。。。
我正在创建第一个使用子dag的dag并导入子dag操作符
`from airflow.operators.subdag import SubDagOperator`
然而,我不断得到流动的错误
“损坏的DAG:[/usr/local/aiffort/dags/POC_Main_DAG.py]没有名为'aiffort.operators.subdag'的模块”
我还尝试导入虚拟操作符,但得到了相同的错误。
另一方面,以下操作员似乎是按预期导入的
from a
是否有可能获得气流中dag的实际启动时间?我所说的开始时间是指dag的第一个任务开始运行的确切时间
我知道我可以使用宏来获取执行日期。如果作业是使用trigger_dag运行的,这就是我所说的开始时间,但是如果作业是按每日计划运行的,那么{{execution_date}}返回昨天的日期
我还尝试将datetime.now().isoformat()放在dag代码主体中,然后将其传递给任务,但这似乎返回了任务第一次调用的时间,而不是dag本身启动的时间。我按照您所述的方式:
我所说的开始时间是指
标签: Airflow
airflow-schedulergoogle-cloud-composer
我已经使用GoogleComposer一段时间了(Composer-0.5.2-airflow-1.9.0),气流调度器出现了一些问题。调度器容器有时会崩溃,它可能会进入锁定状态,无法启动任何新任务(数据库连接出错),因此我必须重新创建整个Composer环境。这一次,出现了一个CrashLoopBackOff,调度程序盒无法再重新启动。这个错误与我以前遇到的非常相似。这是Stackdriver的回溯:
Traceback (most recent call last):
File "/us
是否有任何方法可以获取故障回调时气流上的异常详细信息
我注意到它不是上下文的一部分。我想创建一个通用的异常处理机制,它可以发布有关错误的信息,包括有关异常的详细信息。我现在已经设法触发/执行回调并发布到Slack,但无法发布异常详细信息
谢谢。我认为可能无法在回调中获取异常详细信息
#悲观地处理回调
尝试:
如果self.state==state.UP\u FOR\u RETRY和task.on\u RETRY\u回调:
任务。在\u重试\u回调(上下文)
如果self.state==state
如何设置在特定dag_运行期间使用的变量。我知道在xcom中设置值,但并不是所有我使用的操作符都支持xcom。我也不想将值存储到变量数据存储中,以防在当前dag运行时另一个dag运行开始,需要存储不同的值。问题不清楚,但从我的推断,我将尝试消除您的疑虑
并非我使用的所有操作符都支持xcom
显然,您将xcom与其他构造弄错了,因为xcom功能是BaseOperator本身定义的功能和(它是所有操作器的父项)
我也不想将值存储到变量数据存储中,
如果当前dag运行时另一个dag运行开始,则
需
我有一种情况,我需要使用无触发规则,但它的行为异常。这是我的设想
分支任务B,
如果为真T1>>T2>>joinTask
如果为false F1>>F2>>JointTask
如果B中的条件为false,则跳过T1,但执行T2,因为触发规则为“全部完成”(即使T1失败,我也需要T2)。所以我把T2改成“无跳过”
我希望在T1成功或失败或上游失败时触发T2(根据文档)。相反,T2会在dag启动时立即触发。它是在任何其他任务之前执行的。这似乎是最近才在气流1.10.5中修复的:
尝试将气流更新为1
如何在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
我目前正在建造一条通过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,而
我在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
安装正确。db正确启动并尝试启动Web服务器时显示以下错误
我重新安装了所有的东西,但它仍然不工作
如果有人帮助我,我将不胜感激
控制台输出:
$:~/airflow# airflow webserver -p 8080
____________ _____________
____ |__( )_________ __/__ /________ __
____ /| |_ /__ ___/_ /_ __ /_ __ \_ | /| / /
__
气流任务未排队到正确的池
子dag任务占用当前池中所有正在运行的插槽,因此我为子dag任务创建了一个单独的池
然后将此池分配给子DAG
brand\u subdag\u操作符=subdag操作符(
任务标识=品牌标识,
subdag=品牌_subdag,
池='subdags\u池',
)
但是这些任务一直在default\u池中调度,而不是在新的subdag\u池中调度
我希望如果任务的池设置为subdag\u pool,任务将在此池中排队
有关
我有一个要求,我想安排一个气流作业每隔周五。然而,问题是我无法想出如何为此编写时间表
我不想为此有多份工作
我试过这个
'0 0 1-7,15-21 * 5
但是它不起作用,每天从1点到7点,从15点到21点
从shubham的回答中,我意识到我们可以有一个蟒蛇操作员,它可以为我们跳过任务。我试图实现这个解决方案。然而,这似乎不起作用
因为在2周内进行测试太困难了。这就是我所做的
我计划DAG每5分钟运行一次
然而,我正在编写python操作符skip althernate任务(非常类似于我
标签: Airflow
airflow-operatorapache-airflow-xcomairflow-worker
我想通过电子邮件从MS Exchange Server邮箱提取附件
请告知哪位操作员将帮助从MS Exchange Server邮箱访问和下载附件?您已经尝试了什么?请分享你的代码。谢谢你的考虑。
标签: Airflow
airflow-schedulerairflow-operator
我有一份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
我想解密气流连接的密码(从连接表中获取值)。是否有任何方法可以解密密码值。您可以执行以下操作:
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_
我刚刚开始使用Airbnb,但我仍然不清楚如何/何时完成回填
具体来说,有两个用例让我感到困惑:
如果我运行airflow scheduler几分钟,停止它一分钟,然后重新启动它,我的DAG似乎在前30秒左右运行额外的任务,然后继续正常运行(每10秒运行一次)。这些额外的任务是“回填”的任务,在早期运行中无法完成吗?如果是这样,我将如何告诉airflow不要回填这些任务
如果我运行气流调度器几分钟,然后运行气流清除我的教程,然后重新启动气流调度器,它似乎会运行大量额外任务。这些任务是否也会以某种
在airflow.models.BaseOperator中。您有两个默认参数:
取决于\u过去=False和触发规则=u'all\u success'
据博士说
依赖于过去(bool)–当设置为true时,任务实例将按顺序运行,同时依赖上一个任务的计划成功
触发器规则(str)–定义用于触发任务的依赖项的规则
这不是一回事吗?我不明白为什么会有冗余参数。不,两者完全不同。depends_on_pass(布尔值)用于检查是否运行任务,具体取决于任务的上一次DAG运行(上次运行)。触发器\规则用于根
由于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
目前,我们正在Kubernetes上使用自己安装的Airflow版本,但我们的想法是在Cloud Composer上迁移。我们使用Airflow来运行DataFlowJavaOperator的定制版本的数据流作业(使用插件),因为我们需要执行jar中不自包含的java应用程序。因此,我们基本上运行一个启动命令的bash脚本:
java -cp jar_folder/* MainClass
所有jar依赖项都存储在所有工作程序之间的共享磁盘中,但Composer中缺少此功能,我们被迫使用云存储来
我希望任务在启动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,
我有大约一百万个任务使用相同的python函数。每个都需要使用不同的开始日期和参数运行
早些时候,我问了一个关于如何在一个DAG下运行两个这样的任务的问题。然而,当任务变得很多时,答案是不可伸缩的。(参见链接和注释)
问题
如何在Airflow上以可伸缩的方式运行一百万(或任何大数量)或下的任务,其中每个任务都来自相同的python函数,但具有不同的开始日期和参数
注释
这些任务不需要在主机上运行(因为它们源于python函数)。实际上,它们很可能以分布式方式在Kubernetes集群上运行(o
我想运行气流计划(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
我使用以下dag测试气流1.10:
dag = DAG(dag_id='something',
start_date=datetime(2019,1,2).replace(tzinfo=pytz.timezone('US/Eastern')),
schedule_interval='@once',
...)
然后我有几个bash操作符:
o1 = BashOperator(bash_command="echo 0", dag=dag, task_id='o1')
o2 = BashOperat
我有一个大的DAG正在运行,但是它只是因为那个消息而停止,我无法找出文件上的错误
如果这有区别的话:我的气流在一个有舵图的牧场主里运行。我想这通常是内存不足的例外。我想了一种方法来减少所有内存的大小。第一次尝试是加载一些行,而不是所有行:
serverCursor=conn.cursor(“serverCursor”)
serverCursor.execute(f'''select*from{ORIGIN\u SCHEMA}.{table};'')
df=[]
尽管如此:
records=ser
我正在尝试使用DAG任务将文件存储到GCS中。
我已在airflow connections页面的“keyfile json”字段中指定了我的服务帐户信息。但是,在运行dag时,即使GCP服务帐户具有“存储对象管理员”角色,我仍收到一个权限错误:
错误-403获取:airflow@xstack-developers-237307.iam.gserviceaccount.com没有storage.Bucket.get访问weather_api的权限。
回溯(最近一次呼叫最后一次):
文件“/Use
标签: Airflow
airflow-schedulerairflow-operator
我们正在运行大量的DAG,因此,每个日历日期都有数千个任务实例。我们偶尔会有几天失败,我们正试图尽可能有效地重新安排这些日期
我们尝试使用的方法是使用UI的搜索功能缩小失败日期的完整列表,然后单击“删除”(据我所知,这相当于“清除”任务实例),如此屏幕截图所示
我们使用catchup=True自动重新运行已清除的日期,但在检查应重新运行这些已删除日期的各个DAG后,这些日期将不再显示。甚至不在“清除”或“运行”状态。日期根本不存在。例如,我们删除了2020年3月30日和2020年3月31日,因
是否可以禁用气流实验API?我已经搜索了airflow.cfg的示例,但没有看到任何可以实现它的内容。也许可以使用来完成一些事情,但我不确定是什么。由于Airflow 1.10.11,实验性API默认拒绝所有请求(请参阅)
如果运行的是旧版本的Airflow,则可以设置
auth_backend = airflow.api.auth.backend.deny_all
我正在尝试编写一个测试用例,其中我:
实例化一组(Python)运算符(使用unittest.mock.patch修补它们的一些依赖项)
将这些操作符安排在DAG中
跑那狗
对各种模拟下游的调用进行断言
我从中看出,运行DAG并不像调用DAG那么简单。run-我应该实例化一个local\u客户机,并在该客户机上调用trigger\u DAG。但是,生成的代码,不接受任何允许我传入手动构造的DAG的参数-因此我看不到如何使用local\u client运行此DAG
我在这里看到了几个选项:
我正在安排一个气流作业。然而,为了验证我是否安排了正确的作业,我需要查看它将来何时运行
气流有下面的命令,让我下一次运行。然而,对于某些用例来说,这还不够。例如,我计划每隔周五运行一次作业。我如何验证这一点
airflow next_execution <dag_id>
下一次执行时的气流
有没有办法,我可以得到这个dag运行的所有未来日期。或者至少两个?钩下croniter使用的气流,用于。在文档的示例之后,这可以工作如下(例如,考虑DAG在每星期五晚上12点运行,我们的基准日
标签: Airflow
airflow-schedulerairflow-operator
我使用的是one_success触发器规则,这样,如果父任务中的任何一个通过,那么子任务将按预期运行。然而,当两者都失败时,我就遇到了问题。在这种情况下,子任务将被跳过,而不是失败。下面是dag的实现
import logging
from airflow import DAG
from datetime import datetime, timedelta
from airflow.operators.hive_operator import HiveOperator
from airflow
我在GCP中有一个Composer/Airflow实例(版本Composer-1.12.2-Airflow-1.10.10),它可以正常运行其当前作业(大约40个DAG,每个DAG中有6个数据流作业和18个其他较短的任务)。
数据流作业从数据流模板(普通模板,而不是flex模板)运行,通常需要大约20分钟才能完成,部分是并行的。我从一条python开始
如果我使用Dataflow选项,实例就会阻塞。在CPU使用率较高的情况下,它最多只能在前20分钟内安排每分钟一个数据流作业。这会导致任务不断累积
我听起来像一个>>[B,C]>>D
其中,D是一个成功触发
只会跑一次
是否有一种方法可以让我在每次成功后都能运行D(而不是同时等待两者)
或者我必须设置两个不同的DAG?
A>>B>>D
和
A>>C>>D
不管答案如何
…由于D不能并行运行,我假设我应该将D分配给一个特定的池
其中池只有一个工作插槽
谢谢
有人有良好的复杂触发经验吗?您不需要有两个不同的DAG。对于D,确实需要两个操作符。
这将在不使用池的情况下解决问题:
with DAG(
dag_id="my_dag&q
我试图使用环境变量将DB参数传递给BashOperator,但我找不到任何文档/示例来说明如何使用来自Jinja模板的连接
所以我在寻找类似于变量的东西
echo {{ var.value.<variable_name> }}
echo{{var.value.}
气流不提供此类宏。
但是,您可以创建自定义宏来解决此问题
连接示例:
创建宏:
def get_host(conn_id):
connection = BaseHook.get_connection(conn_i
我正在试图弄清楚如何在我正在创建的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 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
airflow-schedulerairflow-operator
关于这一点,我已经搜索了很多,但找不到任何实质性的信息。我的问题是我有一个DAG,它应该回填2017年3月的数据
因此,我将开始日期定为:“2017年3月1日”。我还提供了每日的计划时间间隔。现在,我知道我的DAG将按照给定的时间表从2017年3月开始运行。但是,如果我的dag每天都按照计划进行,则需要2年以上的时间才能达到当前日期
我不能等待2年才能得到过去的数据。我希望我的DAG尽快完成回填,以便我的DAG能够赶上当前时间并开始安排每天的工作。我怎样才能做到这一点?我是否可以为某个较高的数字
1 2 3 4 5 6 ...
下一页 最后一页 共 39 页