您好,登錄后才能下訂單哦!
這篇文章主要介紹“Django定時任務Django-crontab如何使用”,在日常操作中,相信很多人在Django定時任務Django-crontab如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Django定時任務Django-crontab如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在使用的django做測試平臺時,,多多少少都會遇到需要定時任務的功能,比如定時執行任務,檢查訂單之類的。可能是一段時間,比如每隔 10分鐘執行一次,也可能是定點時間,比如 14:00 執行,也可能是長時間,比如每周幾,每個月的哪一天等。查看了一下相關資料, django 定時任務 django-crontab 庫比較多教程和資料,雖然 star 數才五百,但是 API 接口比較簡單,接入也很方便,功能也很全面,當然,也存在一此無法解決的問題,使用時需要注意的
1.使用 pip install django-crontab
2.添加配置文件到settings.py INSTALLED_APPS 中,
INSTALLED_APPS = ( 'django_crontab', )
3.編寫定時函數
定時任務分為兩類,一種是執行自定義的manage.py,另一種是執行自定義函數
在Django中的app中新建一個myapp/cron.py 文件,把需要定時的代碼放進去
def my_schedule_job(): pass
4.在setting.py中增加CEONJOBS
配置
CRONJOBS = [ ('*/5 * * * *', 'myapp.cron.my_scheduled_job') ]
也可以定義一些關鍵字參數,有2種格式:
格式1:
要求:cron計時通常格式(有關更多示例,請參閱 Wikipedia 和 crontab.guru)
要求:python模塊路徑下待執行定時任務
可選:特定于定時任務的后綴(例如,將 out/err 重定向到文件,默認值為'')
CRONJOBS = [ ('*/1 * * * *', 'appname.test_crontab.test','>>/home/python/test_crontab.log') ]
注意: >> 表示追加寫入, > 表示覆蓋寫入。
格式2:
要求:cron計時通常格式
要求:python模塊路徑下待執行定時任務
可選:方法的位置參數列表(默認值:[])
可選:方法的關鍵字參數的dict(默認值:{})
可選:特定于定時任務的后綴(例如,將 out/err 重定向到文件,默認值為'')
CRONJOBS = [ ('*/5 * * * *', 'myapp.cron.other_scheduled_job', ['arg1', 'arg2'], {'verbose': 0}), ('0 4 * * *', 'django.core.management.call_command', ['clearsessions']), ]
對于熟悉 Linux 中定時任務 crontab 的同學可能對上面第一個參數的語法很親切。上面表示每隔1分鐘
執行一次代碼。
Linux 中的定時任務 crontab 的語法如下:
* * * * * command 分鐘(0-59) 小時(0-23) 每個月的哪一天(1-31) 月份(1-12) 周幾(0-6) shell腳本或者命令
* 代表所有的取值范圍的數字 / 代表每的意思,*/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 * 0 6 * * * commands >> /tmp/test.log # 每天早上6點執行, 并將信息追加到test.log中 0 */2 * * * commands # 每隔2小時執行一次
5.添加并啟動定時任務
# 添加并啟動定時任務 python manage.py crontab add
其他命令
#顯示當前的定時任務 python manage.py crontab show #刪除所有定時任務 python manage.py crontab remove
到此,關于“Django定時任務Django-crontab如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。