Django學習筆記-定時器 CRONTAB_django

來源:互聯網
上載者:User

一、Introduction 二、Backgoround 三、CRONTAB 1.安裝 2.配置 3.添加定時任務 4.啟動任務 四、結束 五、參考

一、Introduction

在官網上的說明:
dead simple crontab powered job scheduling for django
英語不好的我只是認為crontab能給django提供一個按照時間進行的作業調度的功能。 二、Backgoround

在做網站的時候,往往需要在某個固定的時間點,或者某個固定的時間間隔自動的觸發一個事件,進行一些操作。比如每個月的財務報表在月末的時候會自動產生,然後發一個賬單到你的email中。

針對這個需求,我們就要使用crontab實現定時器的功能。
但是在django中實現定時器的工具有好幾種,我們使用crontab是因為它比較簡單,便於使用。
celery也可以實現這個功能,這裡就不討論了。

但是crontab有個缺點:

就是他不支援在windows使用。不過幸好博主就是在linux上開發的。 三、CRONTAB

話不多說,開始使用crontab吧。 1.安裝

pip install django-crontab
2.配置

在setting.py中的INSTALLED_APPS加入django_crontab

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'django_crontab',]
3.添加定時任務

在app中的xxx.py中加入task()函數

# 某個app/xxx.pydef task():   #定時任務   ···

同時要在setting.py中添加這個定時任務

CRONJOBS = [    # 每一分鐘執行一次      ('*/1 * * * *', 'app名稱.xxx.task')]

具體參數解釋:

前5個(*)星號: M(分鐘0-59) H(小時0-23) D(天1-31) m(月1-12) d(一星期內的天0-6,0為星期天)

特殊符號: * 代表所有的取值範圍的數字 / 代表每的意思,*/5就是每5個單位 - 代表從某個數字到某個數字 , 分開幾個離散的數字

舉個列子:

每兩個小時 0 /2 * *
晚上11點到早上8點之間每兩個小時,早上8點 0 23-7,8 * * *
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 0 11 4 * 1-3
1月1日早上4點 0 4 1 1 * 4.啟動任務

# 將任務添加並生效python manage.py crontab add# 顯示當前的定時任務python manage.py crontab show# 刪除所有定時任務python manage.py crontab remove# 只運行定時任務試一試python manage.py crontab run 

注意:
當添加一個定時任務後:

得到了一個hash值,所以在進行run的時候:

python manage.py crontab run 2fc2215151a785c33b28c74ad5feb636

就像git一樣

除此之外,要有查看crontab的檔案的命令:corntab -e 四、結束

運行這個項目就會定時觸發事件,執行你要的代碼了。
當然要是僅僅輸出一些東西,啟動並執行時候是看不到的。

列印log,傳參等等這裡就不贅述了。如圖
五、參考

https://github.com/kraiz/django-crontab
https://pypi.python.org/pypi/django-crontab

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.