1.首先把須要自動執行的django method寫成django command
2.將本身定義的django command添加到cron中使用cron服務實現按期執行 python
Part1 在django工程中添加自定義的django command
1.咱們本身創建的application叫作myapp,首先在這個app目錄下,咱們須要新建management目錄,這個目錄裏應該包括:__init__.py(內容爲空,用於打包)和commands目錄,而後在commands目錄下包括:__init__.py和mycommand.py ,其中 mycommand.py就是用於咱們自定義command的方法,目錄的樹狀結構以下: shell
myapp/ __init__.py models.py management/ __init__.py commands/ __init__.py mycommand.py tests.py views.py2.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命令了。
想了解更詳細,看這裏。 django
Part2 使用cron來按期執行django command
首先要肯定本身的cron服務是開啓的: bash
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.log echo "0 6,12,18 * * 1-5 python $p/manage.py mycommand > $p/djangocron.log 2>&1" > djangocron crontab djangocron crontab -l解釋一下:
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分執行後面的命令;
crontab -l #查看 crontab -e #修改
只要調整cron前面設置的時間參數,就能夠測試本身的命令有沒有成功執行,查看djangocron.log來查看輸出和error。 app