在做一個django項目的時候申鱼,我遇到了一個定時任務(wù)的需求愤诱,我這里是需要定時掃描數(shù)據(jù)庫并發(fā)送郵件,在查閱相關(guān)資料后捐友,總結(jié)出如下幾個方法
- 使用while創(chuàng)建一個死循環(huán)淫半,判斷時間,從而執(zhí)行一些函數(shù)
- 使用APScheduler庫實現(xiàn)定時任務(wù) (詳情可以見http://blog.csdn.net/hui3909/article/details/46652623)
- django-crontab實現(xiàn)定時任務(wù)
- django-celery實現(xiàn)定時任務(wù)
django-crontab實現(xiàn)定時任務(wù)
在我斟酌再三匣砖,最終還是選擇了django-crontab這個方法科吭,這個方法最契合我的需求,同時也相對簡單猴鲫,所以本文也就著重介紹一下
django-crontab安裝
安裝django-crontab庫
這里使用pip安裝即可对人,在終端輸入以下命令即可
pip install django-crontab
在工程里使用django-crontab
在django項目的settings.py的INSTALLED_APPS添加django-crontab
如圖示即可
django-crontab配置
django-crontab可以定時運(yùn)行自定義命令和函數(shù)兩種方式
定時函數(shù)
在django項目的settings.py中添加以下命令
CRONJOBS = (
('*/1 * * * *', '你的app名.定時函數(shù)所在的py文件名.定時函數(shù)名'),
('0 0 1 * *', '你的app名.定時函數(shù)所在的py文件名.定時函數(shù)名', '> 輸出文件路徑和名稱'),
)
- 第一種的意思就是每一分鐘執(zhí)行一次你的定時函數(shù)
- 第二種時定時函數(shù)輸出的內(nèi)容到指定文件(如果該路徑或文件不存在將會自動創(chuàng)建)
定時命令
CRONJOBS = (
('10 12 * * *', 'django.core.management.call_command', ['要執(zhí)行的命令']),
)
- 意思是在12點10分執(zhí)行命令
定時任務(wù)的操作
- python manage.py crontab add 添加定時任務(wù)
- python manage.py crontab remove 清除定時任務(wù)
- python manage.py crontab show 顯示定時任務(wù)
- 當(dāng)你添加了或者修改的定時任務(wù),只需執(zhí)行命令1即可
- 如果你想刪除定時任務(wù)拂共,請執(zhí)行命令2
注:
- 當(dāng)定時任務(wù)執(zhí)行時牺弄,如果你只是一些輸出語句,那么你將看不到任何內(nèi)容宜狐。請不要懷疑沒有執(zhí)行
- 上述環(huán)境在ubuntu16.04 lts django1.9中測試成功
- 上述文字皆為個人看法势告,如有錯誤或建議請及時聯(lián)系我