【MLOps - Airflow 疑難雜症】別讓任務跑到天荒地老 - Timeout 終極設定指南

更新 發佈閱讀 4 分鐘

🧵 一個小故事

在某個星期六的清晨,工程師小明被監控的訊息吵醒, Airflow 上的任務居然跑了 16 個小時還沒結束!

原來是某支資料轉換腳本卡在網路重連邏輯中,無限重試,一路跑進週末。

這時候小明邊泡咖啡邊想: 「要是早點加上 timeout,就不用週末加班了...」。

🧠 為什麼需要 timeout?

  • 防止任務卡住不結束(ex: 死循環、等待外部系統)。
  • 提高資源使用效率(避免佔用 executor slot)。
  • 提升排錯與監控效率(SLA 警示 + 自動重試)。

✅ 常見四種過期控制方法

1. execution_timeout(最推薦)

針對單一任務設定最長執行時間,超時會自動失敗:

from airflow.decorators import task
from datetime import timedelta

@task(execution_timeout=timedelta(minutes=5))
def extract_data():

2. 使用 default_args 統一設定所有任務 timeout

若你的 DAG 中任務數量多、結構一致,建議使用 default_args:

default_args = {
'execution_timeout': timedelta(minutes=15),
...
}

with DAG(
dag_id='daily_etl_pipeline',
default_args=default_args,
...
) as dag:
...

3. 設定 SLA(延遲通知,不會強制中止任務)

若想追蹤任務是否「在可接受時間內完成」,但不想強制 timeout,可以用 SLA:

@task(sla=timedelta(minutes=30))
def load_data():
...

SLA 可搭配 email、Slack 或 callback function 做延遲警示,不會終止任務執行。

4. 限制整個 DAG Run 的執行時間

有時候你想限制整條流程(DAG)不得超過某個時間,例如每日 ETL 最晚要在 2 小時內跑完:

DAG(
dag_id='hourly_summary',
dagrun_timeout=timedelta(hours=2),
...
)

💡 加值技巧

  • 若加上 execution_timeout 的任務容易 timeout,可配合 retries + retry_delay 自動重試。
  • 若是外部系統導致 delay,可考慮加入 timeoutretry 參數在 API call 裡面(例如 requests 或 SQL hook)。
  • 若要明確中止某任務,可加上 on_failure_callback 做通知或補償行為。

✅ 總結表格

raw-image


結語

記得幫每個你「不確定會多久」的任務,加上 execution_timeout, 這不只是為了穩定系統,也是為了讓週末的你,可以安心睡覺 😴。

留言
avatar-img
阿Han的沙龍
153會員
328內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/06/18
Common Voice 是 Mozilla 發起的一個開源專案,目的是建立一個大型、公開、自由可用的語音資料庫,讓任何人(尤其是研究人員、開發者、公司)都可以用來訓練語音辨識、語音合成(TTS)等人工智慧應用。 很幸運的, Common Voice也將原始碼提供給大家使用, 在 🔍 h
Thumbnail
2025/06/18
Common Voice 是 Mozilla 發起的一個開源專案,目的是建立一個大型、公開、自由可用的語音資料庫,讓任何人(尤其是研究人員、開發者、公司)都可以用來訓練語音辨識、語音合成(TTS)等人工智慧應用。 很幸運的, Common Voice也將原始碼提供給大家使用, 在 🔍 h
Thumbnail
2025/06/11
關於Airflow是什麼, 歡迎參考「🔒 阿Han的軟體心法實戰營 - MLOps」, 在開始之前我們也推薦以下兩篇給您閱讀: 【🔒 MLOps - Airflow】使用docker compose架設Airflow 【🔒 MLOps - Airflow】使用DAG流程呼叫Docker O
Thumbnail
2025/06/11
關於Airflow是什麼, 歡迎參考「🔒 阿Han的軟體心法實戰營 - MLOps」, 在開始之前我們也推薦以下兩篇給您閱讀: 【🔒 MLOps - Airflow】使用docker compose架設Airflow 【🔒 MLOps - Airflow】使用DAG流程呼叫Docker O
Thumbnail
2025/05/14
當我們在開發AI應用程式的時候, 常常會使用到onnx, ONNX 是一種開放標準格式,允許不同深度學習框架(如 PyTorch、TensorFlow、Scikit-learn)之間互通,使模型可以在不同平台上運行,而 ONNX Runtime 則是一個高效能的推理引擎,專門用來加速 ONNX
Thumbnail
2025/05/14
當我們在開發AI應用程式的時候, 常常會使用到onnx, ONNX 是一種開放標準格式,允許不同深度學習框架(如 PyTorch、TensorFlow、Scikit-learn)之間互通,使模型可以在不同平台上運行,而 ONNX Runtime 則是一個高效能的推理引擎,專門用來加速 ONNX
Thumbnail
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
紀錄時間2024/07/30
Thumbnail
紀錄時間2024/07/30
Thumbnail
紀錄時間2024/07/23
Thumbnail
紀錄時間2024/07/23
Thumbnail
紀錄時間2024/07/17
Thumbnail
紀錄時間2024/07/17
Thumbnail
有時候巴不得一天有72小時……所以在時間的分配上,必須每一分每一秒都算得剛剛好才行。 嗨,各位好我是出雲,我們又見面了! 上回結尾時提到,我是在「新冠疫情」爆發下,才有了重新審視自己的機會。 (只可惜該工作還是得工作) 出雲我目前現職為遊戲企劃、偶爾兼個差,有時候巴不得一天有72
Thumbnail
有時候巴不得一天有72小時……所以在時間的分配上,必須每一分每一秒都算得剛剛好才行。 嗨,各位好我是出雲,我們又見面了! 上回結尾時提到,我是在「新冠疫情」爆發下,才有了重新審視自己的機會。 (只可惜該工作還是得工作) 出雲我目前現職為遊戲企劃、偶爾兼個差,有時候巴不得一天有72
Thumbnail
突然有很多時間以後,仍覺得時間很不夠用。 當社畜的時候,每天6點起床,弄好早餐趕小孩起床,七點出門,送孩子到學校後又塞車晃晃晃到公司。早上忙忙忙等午餐,午睡後忙忙茫等下午茶,茫茫茫接著等下班。回家趕做家事,趕小孩洗澡睡覺,趕追劇,趕12點睡覺。日復一日,年復一年,每天都覺得快轉,時間不夠用。
Thumbnail
突然有很多時間以後,仍覺得時間很不夠用。 當社畜的時候,每天6點起床,弄好早餐趕小孩起床,七點出門,送孩子到學校後又塞車晃晃晃到公司。早上忙忙忙等午餐,午睡後忙忙茫等下午茶,茫茫茫接著等下班。回家趕做家事,趕小孩洗澡睡覺,趕追劇,趕12點睡覺。日復一日,年復一年,每天都覺得快轉,時間不夠用。
Thumbnail
今天是連續第60日的日更,明起暫停,調整發文方式。 原先在日常的運轉中,一直想盡各種方式要維持日更的原因是:深知自己一旦停下來或者幫自己放水之後,就很難再維持或者重新進入到一個有紀律的輸出狀態。 甚至,在遇到周末或者節假日整天不在家裡時,還會預設排程,維持每日發文。 不過,如果以第一性原理回頭
Thumbnail
今天是連續第60日的日更,明起暫停,調整發文方式。 原先在日常的運轉中,一直想盡各種方式要維持日更的原因是:深知自己一旦停下來或者幫自己放水之後,就很難再維持或者重新進入到一個有紀律的輸出狀態。 甚至,在遇到周末或者節假日整天不在家裡時,還會預設排程,維持每日發文。 不過,如果以第一性原理回頭
Thumbnail
自然安排的事情其實很多,不斷地發生,只是懶得寫。昨天的2件事比較明顯,那就來寫一下好了。   一、開始了想了很久的超慢跑   昨天吃完早餐,坐下來開電腦。開得有點慢,然後每個動作都很慢,甚至不動,幾分鐘後我決定重開機,將網頁和檔案都關掉,重開機,這是我這幾年碰到電腦很慢時的做法。   重
Thumbnail
自然安排的事情其實很多,不斷地發生,只是懶得寫。昨天的2件事比較明顯,那就來寫一下好了。   一、開始了想了很久的超慢跑   昨天吃完早餐,坐下來開電腦。開得有點慢,然後每個動作都很慢,甚至不動,幾分鐘後我決定重開機,將網頁和檔案都關掉,重開機,這是我這幾年碰到電腦很慢時的做法。   重
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News