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