Django學習之方法自動地定期執行

2021-07-23 19:26:20 字數 2633 閱讀 5609

在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...