如何讓django方法自動地定期執行

2021-09-06 18:05:37 字數 2243 閱讀 4081

實現思路:

1.首先把需要自動執行的django method寫成django command

2.將自己定義的django command新增到cron中使用cron服務實現定期執行

part1 在django工程中新增自定義的django command__init__

.py models.py

management/

__init__

.py commands/

__init__

.py mycommand.py

tests.py

views.py

2.書寫command的內容mycommand.py,簡單示例如下:

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

1、ubuntu下cron開啟/關閉/重啟

配置檔案一般為/etc/init.d/cron

啟動:sudo /etc/init.d/cron start

關閉:sudo /etc/init.d/cron stop

重啟:sudo /etc/init.d/cron restart

sudo service cron restart

重新載入配置:sudo /etc/init.d/cron reload

可以用ps aux | grep cron命令檢視cron是否已啟動

2、新增 cron 任務

推薦使用crontab -u 使用者名稱 -e命令新增自定義的任務(編輯的是/var/spool/cron下對應使用者的cron檔案,在/var/spool/cron下的crontab檔案 不可以直接建立或者直接修改,crontab檔案是通過crontab命令得到的)。

a、直接執行命令列

每隔5秒列印乙個字串「hello world」,儲存至檔案/home/linjiqin/helloworld.txt中,cron格式如下:

*/5 * * * *  echo "

hello world

" >> /home/linjiqin/helloworld.txt

b、shell檔案

每隔5秒呼叫一次/home/linjiqin/helloworld.sh檔案,cron 格式如下:

*/5 * * * *  /home/linjiqin/helloworld.sh

檔案/home/linjiqin/helloworld.sh的內容如下:

#

!/bin/sh

cd /home/linjiqin/echo

"hello world

" >> helloworld.txt

sudo service cron restart

sudo service cron status

crontab -l #檢視cron

crontab -e #修改cron

cron常用範例:

每隔5秒執行一次:*/5 * * * * ?

每隔1分鐘執行一次:0 */1 * * * ?

每天23點執行一次:0 0 23 * * ?

每天凌晨1點執行一次:0 0 1 * * ?

每月1號凌晨1點執行一次:0 0 1 1 * ?

每月最後一天23點執行一次:0 0 23 l * ?

每週星期天凌晨1點實行一次:0 0 1 ? * l

在26分、29分、33分執行一次:0 26,29,33 * * * ?

每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ?

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

在django中,我們如何讓其方法自動定期的執行呢?本文和大家分享的就是這部分內容,希望可以幫助大家更好的 實現思路 1.首先把需要自動執行的 django method 寫成django command 2.將自己定義的 django command 新增到cron 中使用cron 服務實現定期執...

讓oracle自動啟動方法

bin sh echo begin to start oracle su oracle c lsnrctl start su oracle c agentctl start su oracle c sqlplus nolog connect as sysdba startup open exit 以...

讓oracle自動啟動方法!

bin sh echo begin to start oracle su oracle c lsnrctl start su oracle c agentctl start su oracle c sqlplus nolog 以下部分為自動停止 bin sh su oracle c lsnrctl ...