亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 start_date 而不是 execution_date 上觸發氣流調度?

如何在 start_date 而不是 execution_date 上觸發氣流調度?

搖曳的薔薇 2022-06-02 15:10:21
來自https://airflow.apache.org/scheduler.html:請注意,如果您在一天的 schedule_interval 上運行 DAG,則標記為 2016-01-01 的運行將在 2016-01-01T23:59 之后不久觸發。換句話說,作業實例在其涵蓋的時間段結束后啟動。這個功能很傷人。例如,我有每天運行的 etl 作業, schedule_interval 是0 1 * * *,因此它將在 2019-09-22 01:00:00 觸發 2019-09-23 01:00:00 作業。但是我的 etl 正在處理 start_date 之前的所有數據,意味著數據范圍在 (history, 2019-09-23 00:00:00) 之間,我們不能使用datetime.now(),因為這無法重現。這迫使我將 1 天添加到 execution_date:etl_end_time = "{{ (execution_date + macros.timedelta(days=1)).strftime('%Y-%m-%d 00:00:00') }}"但是,當我需要使用 schedule_interval 運行作業時45 2,3,4,5,6 * * *,該2019-09-22 06:45:00作業將2019-09-23 02:45:00在 execution_date (next execution time) 之后的一天運行。我不得不更改 schedule_interval45 2,3,4,5,6,7  * * *并在最后一次運行時放置一個虛擬運算符,而不是增加一天。在這種情況下,您不需要在 execution_date 中添加一天,這意味著您必須定義兩個etl_end_time來表示具有不同 schedule_interval 的作業中的相同日期。所有這些對我來說都很不舒服,是否有任何配置或內置方法可以使 execution_date 等于 start_date ?或者我必須修改氣流源代碼......
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

對于計劃運行,next_execution_date將返回觸發的確切時間。



查看完整回答
反對 回復 2022-06-02
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

我發現有一個公關 https://github.com/apache/airflow/pull/5787

此更改將屬性 schedule_interval_edge(包含“開始”或“結束”的字符串)引入 DAG。調度程序使用該值來確定是否應在調度間隔的開始或結束時調度 DAG。

在 [scheduler] 部分的 default_airflow.cfg 中還添加了一個同名參數。

我已經在這個 pr 中獲取了代碼。


查看完整回答
反對 回復 2022-06-02
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號