airflow,

Airflow設定時間踩坑紀錄

Champion Champion Follow Sep 18, 2021 · 1 min read
Airflow設定時間踩坑紀錄
Share this

最近在使用Airflow來做ETL,但是發現Airflow在設定時間有一些坑,網路上也很難查到相關資料,研究了好久終於可以用了, 來記錄一下這次採坑的過程。

第一種情況: 更改scheduler_interval

在網路上的教學會查到通常會教你用以下的程式碼來跑airflow:

airflow在Scheduler欄位就會顯示1 day, 0:00:00 以天為頻率去執行這個任務,那假如我今天希望更改這個任務的執行頻率的時候,一定是想說執行在schedule_interval那邊直接更改 @daily 變成 @hourly,當你去做這樣的事情時就會發現airflow根本沒改(可以自己試試看,記得要重啟airflow scheduler)。原因就在於schedule_interval不該放在default_args那邊,而是要放在DAG的參數裡,這樣airflow才會更改執行頻率。


(圖一)

把default_args放到DAG的參數裡,就可以改變執行任務的頻率

可以看到執行任務的頻率從1 day, 0:00:00變成了@hourly


(圖二)

情況二: 更改start_date

在使用airflow的時候會遇到一種情況是你想要去改這個Dag執行的時間,但是你直接改airflow仍然會執行舊的時間,情況如下:

跟情境一的code一樣,首先我們啟動DAG去觀察執行的時間,執行時間是2021-09-17, 00:00:00


(圖三)

如果我們今天要改成每天早上2點執行,直接改start_date,然後輸入指令airflow db reset,清空資料庫,我們看看結果會怎樣

依然在2021-09-17, 00:00:00執行任務,並沒有因為改了start_date就改變執行任務的時間,為什麼呢?因為airflow看start_date的時候只會看到日不會到小時,所以不管你怎麼改,他對會維持在00:00:00,那要怎麼辦呢?這時候就要去改schedule_interval,用crontab的表示法去表示要執行的時間。


(圖四)

修改如下,將@Daily改成0 2 * * * 這種crontab的語法形式,然後輸入指令airflow db reset,清空資料庫,重新執行就可以看到任務會從早上兩點開始了。


(圖五)

B.t.w 如果你想保留原本DAG的執行紀錄的話而且又想改變執行任務的時間或頻率,就要去更改DAG的名稱比如說將test_time改成test_time_v1這樣,這樣airflow才會從新的設定時間和頻率開始執行。

那以上就是關於Airflow採坑的紀錄,如果有什麼問題都可以在下面進行留言!!!如果喜歡我的文章可以幫我拍拍手哦~~~~

Join Newsletter
Get the latest news right in your inbox. We never spam!
Champion
Written by Champion Follow
Hi, I am Champion, the author of CHAMPION.AI, I will share some AI and investment articles. I hope you like it.