Erlang定時任務server (仿crontab語法)

好久不寫blog了,看到yufeng老大那麼活躍,我也“耐不住寂寞”啊。

前不久寫一個小東西,其中涉及很多定時執行的任務,如數據清理,數據導入,定時計算等等。

涉及到這個東西,就想起了linux下的cron,多麼貼身的服務啊。

但是在我的erlang代碼裏,卻缺少這樣一個東西。沒有關係,自己動手!

 

首先是crontab.cfg配置文件,其語法與linux下的crontab一致,可以 man crontab 進行參考。

但是許要注意,我們使用Erlang Term的語法定義每條任務:

{{m, h, dom, mon, dow}, {M, F, A}}.

m, h, dom ,mon, dow,爲integer,如果包含*,或者step信息,則許要使用 "" 雙引號包圍,使其爲string。MFA,毫無疑問就是我們要定期執行的函數,其會在一個spawn的process中執行.

 

主要包含2個module,一個用來解析crontab.cfg,一個定期檢測crontab.cfg,判斷是否符合條件,如果符合則執行MFA函數。這個module還比較粗糙,採用list遍歷,效率也不是很高。但是已經可以使用了 :)

 

你可以修改crontab.cfg,增添定時任務,cron server通過檢測文件的last modified time來判斷是否許要重新加載.

 

壓縮包中,有一個run.sh,你可以運行:

./run.sh
 

啓動cron server, 等待約1分鐘,會執行crontab.cfg中的MFA,產生屏幕輸出:

run the routine by cron server:1
hello

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章