如何在 Apache Airflow 中正确处理夏令时?

2024-03-18

在气流中,一切都应该是 UTC(不受 DST 影响)。

但是,我们的工作流程可以根据受 DST 影响的时区交付内容。

一个示例场景:

  • 我们安排了一项作业,开始日期为东部时间上午 8:00,计划间隔为 24 小时。
  • 每天东部时间上午 8 点,调度程序会看到距离上次运行已经过去 24 小时,并运行作业。
  • 夏令时到来,我们损失了一个小时。
  • 今天东部时间上午 8 点,调度程序发现时间只有 23 小时,因为机器上的时间是 UTC,并且直到东部时间上午 9 点才运行作业,这是一个延迟交付

有没有办法安排 dags,以便它们在时间更改后在正确的时间运行?


我的头顶上浮现出:

如果您的计算机支持时区,请将 DAG 设置为在美国东部时间上午 8 点运行and世界标准时间 (UTC) 东部夏令时间上午 8 点。就像是0 11,12 * * *。第一个任务是短路操作员。然后使用 pytz 之类的工具来本地化当前时间。如果在您要求的时间内,请继续(即:运行 DAG)。否则,返回 False。每天执行 2 个额外任务会产生微小的开销,但只要您的计算机不过载,延迟就应该是最小的。

草率的例子:

from datetime import datetime
from pytz import utc, timezone

# ...

def is8AM(**kwargs):
    ti = kwargs["ti"]
    curtime = utc.localize(datetime.utcnow())
    # If you want to use the exec date:
    # curtime = utc.localize(ti.execution_date)
    eastern = timezone('US/Eastern') # From docs, check your local names
    loc_dt = curtime.astimezone(eastern)
    if loc_dt.hour == 8:
        return True
    return False

start_task = ShortCircuitOperator(
                task_id='check_for_8AM',
                python_callable=is8AM,
                provide_context=True,
                dag=dag
            )

希望这有帮助

编辑:运行时间是错误的,是减去而不是添加。此外,由于跑步的启动方式,如果您希望跑步的话,您最终可能会希望按小时安排在早上 7 点进行run at 8.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Apache Airflow 中正确处理夏令时? 的相关文章

  • 气流池使用的插槽大于插槽限制

    有三个传感器任务并使用相同的池 池 limit sensor 设置为1 但池限制不起作用 三个池一起运行 sensor wait SqlSensor task id sensor wait dag dag conn id dest data
  • 在 MWAA 中设置 PYTHONPATH

    我正在尝试在 MWAA 上的 dag 内使用本地模块 文件夹结构如下 init py dags init py my dag init py dag py utils init py file py secrets py date py 我
  • Java 夏令时不适用于遥远的过去(更新:确实如此)?

    下面这段代码 TimeZone getTimeZone Europe Athens inDaylightTime new Date 200 8 14 returns true 与 2011 年的情况非常相似 但是 夏令时 https en
  • AWS Lambda 和 Apache Airflow 集成

    想知道是否有人可以阐明这个问题 我正在尝试找到 Airflow REST API URL 以启动 DAG 以从 AWS Lambda 函数运行 到目前为止 除了查看 Apache 孵化器站点提供的所有相关文档之外 解决该问题的唯一指导是在
  • 更改 AirFlow 中 Lambda 调用的“读取超时”

    我有一个 lambda 始终需要超过 1 分钟才能完成执行 这是默认的问题LambdaInvokeFunctionOperator 因为默认情况下 它的钩子会创建一个Boto3与默认连接读取超时60 秒 意味着 60 秒后 如果 Lambd
  • 没有这样的文件或目录 /airflow/xcom/return.json

    创建了一个图像包含 airflow xcom return json在所有子目录上使用 chmod x 由于日志显示找不到文件或目录 尝试过 chmod x strtpodbefore KubernetesPodOperator names
  • 如何向正在运行的气流服务添加新的 dag?

    我有一个气流服务 当前作为网络服务器和调度程序的单独 Docker 容器运行 两者都由 postgres 数据库支持 我在两个实例之间同步了 dags 并且在服务启动时正确加载了 dags 但是 如果我在服务运行时将新的 dag 添加到 d
  • 如何检查何时为特定 dag 安排了下一次 Airflow DAG 运行?

    我已设置气流并运行一些 DAG 安排每天一次 0 0 我想检查下次计划运行特定 dag 的时间 但我看不到可以在管理员中执行此操作的位置 如果你愿意 你可以使用Airflow s CLI 有next execution option htt
  • 为每个文件运行气流 DAG

    所以我在airflow中有一个非常好的DAG 它基本上在二进制文件上运行几个分析步骤 作为airflow插件实现 DAG 由 ftp 传感器触发 该传感器仅检查 ftp 服务器上是否有新文件 然后启动整个工作流程 所以目前的工作流程是这样的
  • 如何记录 Airflow DAG 的输出以进行调试?

    我正在编写 Airflow DAG 但在函数方面遇到一些问题 我正在尝试通过将数据打印到标准输出并使用logging图书馆 我的示例 DAG 是 from datetime import timedelta import airflow i
  • BashOperator 为其他 PythonOperators 中使用的库引发 ImportError

    我的 dag 构建器模块中有一组任务 该模块使用 Airflow 中全球使用的 Python 运算符 我正在 kubernetes 上使用 docker 部署气流 任务失败并显示错误消息 no module named pandas 使用
  • 为什么我的 Airflow 任务被“外部设置为失败”?

    我使用的是 Airflow 2 0 0 我的任务在运行几秒钟或几分钟后偶尔会被 外部 终止 任务通常会成功运行 都是通过以下方式启动的手动任务 airflow tasks test 以及计划的 DAG 运行 所以我相信这与我的 DAG 代码
  • 气流获取重试次数

    在我的 Airflow DAG 中 我有一个任务需要知道它是第一次运行还是重试运行 如果是重试尝试 我需要调整任务中的逻辑 我对如何存储任务的重试次数有一些想法 但我不确定其中是否有合法的 或者是否有更简单的内置方法可以在任务中获取此信息
  • Airflow:网络服务器未找到新的 DAG

    在 Airflow 中 我应该如何处理错误 此 DAG 在网络服务器 DagBag 对象中不可用 它显示在此列表中 因为调度程序将其在元数据数据库中标记为活动状态 我已将新的 DAG 复制到 Airflow 服务器 并尝试过 取消暂停并刷新
  • 我可以在 Airflow 中的一个 DAG 下执行不同开始日期的任务吗?

    我有一个运行两个任务的 DAG A and B 而不是指定start date在 DAG 级别上 我已将其作为属性添加到运算符 我正在使用PythonOperator在本例中 并将其从 DAG 字典中删除 这两个任务每天都会运行 The s
  • 使用 CLI 运行命令在 Airflow 中触发任务

    如何使用以下命令触发 Airflow v1 8 1 DAG 中的特定任务run来自 CLI 的命令 DAG dag DAG test run default args default args schedule interval SCHED
  • Kubernetes 上的气流:Errno 13 - 权限被拒绝:'/opt/airflow/logs/scheduler

    我在 Kubernetes 上运行 Airflow稳定舵图 https github com helm charts tree master stable airflow 我在 AWS 环境中运行它 无论是否安装任何用于日志存储的外部卷 都
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 为什么 Cloud Composer 中会自动生成一个名为“airflow_monitoring”的 DAG?

    在 GCP Composer 上创建 Airflow 环境时 有一个名为airflow monitoring自动创建 即使删除后也会回来 为什么 怎么处理呢 我是否应该将此文件复制到我的 DAG 文件夹中并辞职以使其成为我的代码的一部分 我
  • 从 java.util.TimeZone 转换为 org.joda.DateTimeZone

    在Java中如何将一个实例转换为java util TimeZone to org joda DateTimeZone并保持夏令时 Joda Time 处于维护模式 The 乔达时间 http www joda org joda time

随机推荐

  • 如何更改 Xamarin.Forms 上的后退按钮文本

    我一直在尝试更改 Xamarin Forms 中后退按钮的文本 但没有成功 我已经尝试过这段代码但没有运气 NavigationPage SetBackButtonTitle this 我正在使用一个MasterDetailPage 我尝试
  • 如何消除 XCode 5 / iOS 7 中的图标眩光?

    我正在使用 XCode 5 开发者预览版来创建 iOS 7 应用程序 在iOS 7中 图标的眩光效果不再存在 没关系 但现在 当我在 iOS 6 设备 或模拟器 上运行由 XCode 5 编译的应用程序时 我看到图标上有眩光效果 禁用眩光的
  • 尝试为 linq 中的日期创建大于、等于或大于动态过滤器

    我一直在尝试为 Linq 创建一个表达式树过滤器 它接受 2 个日期和一串可能的值 小于 等于 大于 我希望将调用格式设置为 Query Where CompareDates x gt x left right less than 我有代码
  • 从标准输入读取密码[重复]

    这个问题在这里已经有答案了 场景 一个交互式 CLI Python 程序 需要密码 这也意味着 没有可能的 GUI 解决方案 在 bash 中 我可以读取密码 而无需在屏幕上重新提示 read s Python 有类似的东西吗 IE pas
  • 如何上传到 Dropbox Public 文件夹并获取公共 URL?

    我遇到一种情况 我需要将文件上传到我的 Dropbox 公共文件夹 并且上传后我需要存储上传文件的公共 url 我正在使用 python 对此的任何帮助都会很棒 Thanks 使用它在您的程序中设置 Python SDK https www
  • iOS 推送通知问题

    我正在做一个项目 其中推送通知功能是关键特征之一 当我在应用程序中时它工作正常 我收到通知并处理该通知 但问题是当我在后台并收到通知时 我在应用程序图标上看到徽章 当我单击该图标时 我的应用程序正在启动 但是didReceiveRemote
  • 在 ASP.Net Core 中创建自定义 HTML 帮助器

    我想创建自己的自定义 HTML Helper 就像 ASP NET MVC 中使用的那样 但我一直无法找到如何以正确的方式实现它们 我已经找到了如何创建自定义标记帮助程序 但没有找到 HTML 帮助程序 如何创建我自己的自定义 HTML 帮
  • 从 onLoadFinished() 中的光标填充小部件

    我想知道如何使用CursorLoader填充屏幕上的小部件 网上的所有示例仅适用于使用适配器 而且效果很好 我需要的是一种可靠的方法来从光标和 UI 线程上更新屏幕中的视图 并且有时不会因为以下原因而崩溃StaleDataException
  • 它有一些专门针对 tibble 和管道内衬副作用的函数吗?

    我想知道是否可以使用 dplyr select dplyr mutate 或 dplyr transmute 等函数来调用副作用函数 我有步行 但不是来自同一家庭 tibble as tibble mtcars gt dplyr trans
  • Chrome for IOS 无法在 iframe 中正确打开新窗口

    我正在尝试在 iframe 内的 Chrome for iOS 中的新窗口中打开链接 但 Chrome for iOS 不会在新窗口中打开链接 而是浏览器在同一窗口中而不是在新窗口中打开链接 对于弹出窗口也是如此 很奇怪 Example 测
  • 带有不可见项目的微格式 hreview

    我正在一个网站上实现微格式的 hreview 部分 以供 Google 索引 http www google com support webmasters bin answer py answer 146645 http www googl
  • 确保文件在 JVM 退出时被删除

    即使 JVM 提前终止 File deleteOnExit 是否也能保证文件被删除 正如蒂姆 本德所说 File deleteOnExit 不保证文件确实被删除 但是 在 Unixish 系统 例如 Linux 或 OSX 上 可以删除临时
  • 如何在同一个存储库中保留/维护公共和私有代码? (在存储库托管处)

    我正在开发自己的项目 该项目分为两部分 A 内核 通用代码 公共部分 B 适用于专有协议等的代码 私有部分 可供我和一些授权人员使用 我想要存储库托管 可能是 github assembla 它允许在同一存储库中的公共和私有分支中工作 我不
  • 向 sqlite 数据库添加列

    我正在尝试将在 R 中生成的向量作为新列添加到 sqlite 表中 为此我想使用dplyr 我安装了最新的开发版本以及dbplyr根据这篇文章打包here https www r bloggers com dplyr 0 6 0 comin
  • 标签中可以包含任何类型的标签吗?

    是否有诸如 div div
  • Cakephp 2.0 和基本身份验证

    我已将我的应用程序从 CakePHP 1 3 升级到 2 0 4 以前 我只能在一个控制器中使用安全组件来模拟基本 HTTP 身份验证 我曾经做过这样的事情 this gt Auth gt allow array this gt Secur
  • 使用 sqlparse 解析 CASE WHEN 语句

    我有以下 SQL 查询并想使用它来解析它sqlparse https github com andialbrecht sqlparse import sqlparse query select SUM case when A dt unix
  • postgres docker 容器中的 pg_restore

    我正在尝试使用 pg restore 从将从 docker 文件调用的 shell 脚本中恢复 PostgreSQL docker 容器中的数据库 我收到以下错误 错误 取消自动清理任务 CONTEXT 自动分析表 tablename Do
  • SwitchPreference (PreferenceAtivity) - Android NULL

    我有一个屏幕首选项 因此使用了 PreferenceActivity 我已经构建了所有内容并正常运行 但是通过单击文本 SwitchPreference 即行上的任何位置而不位于同一开关中 他可以使用手机 版本 4 1 2 因空指针异常而爆
  • 如何在 Apache Airflow 中正确处理夏令时?

    在气流中 一切都应该是 UTC 不受 DST 影响 但是 我们的工作流程可以根据受 DST 影响的时区交付内容 一个示例场景 我们安排了一项作业 开始日期为东部时间上午 8 00 计划间隔为 24 小时 每天东部时间上午 8 点 调度程序会