實現思路:
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 importbasecommand, commanderror
class
command(basecommand):
def handle(self, *args, **options):
"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 ...