在django中,我們如何讓其方法自動定期的執行呢?本文和大家分享的就是這部分內容,希望可以幫助大家更好的
實現思路:
1.首先把需要自動執行的
django method
寫成django command
2.將自己定義的
django command
新增到cron
中使用cron
服務實現定期執行
part1 在django工程中新增自定義的
django command
1.我們自己建立的
叫做,首先在這個
目錄下,我們需要新建
management
目錄,這個目錄裡應該包括:
__init__.py
(內容為空,用於打包)和
commands
目錄,然後在
commands
目錄下包括:
__init__.py
和mycommand.py
,其中mycommand.py
就是用於我們自定義
command
的方法,目錄的樹狀結構如下:
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
mycommand.py
tests.py
views.py
2.mycommand.py的
command
內容書寫,簡單示例如下:
from django.core.management.base import basecommand,commanderror
class command(basecommand):
def handle(self, *args, **options):
print "hello world"
我們把basecommand類關聯進來,使用
command
類和handle
方法來作為框架,如上,這個
command
實現的就是列印
"hello world".
通過以上
我們就可以使用python manage.py mycommand 的方式來執行我們自己的
django
命令了。這裡。
part2 使用cron來定期執行
django command
首先要確定自己的cron服務是開啟的:
sudo service crond start
#sudo service crond stop
#sudo service crond restart
將django command我寫了乙個簡單的
shell指令碼,
給大家參考:
#!bin/bash
p=$pwd
touch $p/djangocron
touch $p/djangocron.logecho "0 6,12,18 * * 1-5 python $p/manage.py mycommand > $p/djangocron.log 2>&1" > djangocron
crontab djangocron
crontab -l
解釋一下:
這個指令碼放在與manage.py同一目錄下,以便
p=$pwd
獲取能用的當前路徑。
touch先建立乙個
djangocron
檔案,用於存放
crontab
的命令,建立的
djangocron.log
用來存輸出資訊。
0 6,12,18 * * 1-5 python $p/manage.py mycommand > $p/djangocron.log 2>&1
這一句寫入djangocron檔案,就是
cron
的配置了
0 6,12,18 * * 1-5
這幾個引數未改動的格式是
* * * * *
五個引數使用空格隔開分別表示 分鐘 小時 天 月 周,我這裡的配置就是每個周一到周五的6點
0分 12點
0分 18點
0分執行後面的命令
;後面的命令 python $p/manage.py mycommand,
$p是路徑的引用,其實就是
python manage.py mycommad.
小箭頭 > $p/djangocron.log 2>&1的意思就是 將命令的輸出結果轉存到
djangocron.log
檔案,2>&1
的意思是同時將錯誤資訊也存入
djangocron.log
檔案。crontab djangocron的作用是將我們寫的
djangocron
檔案在crontab
中裝載,裝載後可以:
crontab -l #檢視
crontab -e #修改
只要調整cron前面設定的時間引數,就可以測試自己的命令有沒有成功執行,檢視
djangocron.log
來檢視輸出和
error
。
如何讓django方法自動地定期執行
實現思路 1.首先把需要自動執行的django method寫成django command 2.將自己定義的django command新增到cron中使用cron服務實現定期執行 part1 在django工程中新增自定義的django command init py models.py man...
Django學習系列之django分頁
from django.core.paginator import paginator objects post.objects.filter status published 從資料庫中取出所有status published狀態的文章p paginator objects,3 例項化pagina...
Django學習 URL方法
index name index 例如 urls.py url r bookinfo d polls views.bookinfo,name book html 中 在django中,url起著連線模板和檢視函式的作用。舉例如下 from django.conf.urls import url fr...