django使用django-crontab實現定時任務

在做一個django項目的時候,我遇到了一個定時任務的需求,我這里是需要定時掃描數據庫并發送郵件,在查閱相關資料后,總結出如下幾個方法

  1. 使用while創建一個死循環,判斷時間,從而執行一些函數
  2. 使用APScheduler庫實現定時任務 (詳情可以見http://blog.csdn.net/hui3909/article/details/46652623
  3. django-crontab實現定時任務
  4. django-celery實現定時任務

django-crontab實現定時任務

在我斟酌再三,最終還是選擇了django-crontab這個方法,這個方法最契合我的需求,同時也相對簡單,所以本文也就著重介紹一下

django-crontab安裝

安裝django-crontab庫

這里使用pip安裝即可,在終端輸入以下命令即可

pip install django-crontab

在工程里使用django-crontab

在django項目的settings.pyINSTALLED_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分執行命令

定時任務的操作

  1. python manage.py crontab add  添加定時任務
  2. python manage.py crontab remove 清除定時任務
  3. python manage.py crontab show 顯示定時任務
  • 當你添加了或者修改的定時任務,只需執行命令1即可
  • 如果你想刪除定時任務,請執行命令2

注:

  • 當定時任務執行時,如果你只是一些輸出語句,那么你將看不到任何內容。請不要懷疑沒有執行
  • 上述環境在ubuntu16.04 lts django1.9中測試成功
  • 上述文字皆為個人看法,如有錯誤或建議請及時聯系我
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容