djangoでタイミングタスクを使う方法を詳しく説明します。
今日はdjangoでのタイムミッションの2つの方法を紹介します。
方式一:APScheduler
1)設置:
xi起動タイミングタスク
sched.start()
方式二:django-crontab
1)設置:
djangoのアプリにtest_を新設します。crontab.pyファイルは、必要なタイミングで実行するコードを入れます。
Djangoはプロジェクトの各アプリケーションのmanagement/commandsディレクトリに以下の線を引いていないPythonモジュールにmanage.pyコマンドを登録しました。カスタムコマンドは以下の通りです。BaseCommandから引き継ぐCommandクラスを定義し、handle方法を実現しなければなりません。
appname/manage ment/command/test.pyファイルを作成する
5)settings.pyに配置を追加する
Linuxのタイミングタスクを熟知している学生にとって、上の最初のパラメータの文法はとても親切かもしれません。上には、1分ごとにコードが実行されることを示しています。
linuxのタイミングタスクcrontabの文法は以下の通りです。
6)タイミングタスクを追加して起動する
方式一:APScheduler
1)設置:
pip install apscheduler
2)使用:
from apscheduler.scheduler import Scheduler
from django.core.cache import cache
#
sched = Scheduler()
# 30
@sched.interval_schedule(seconds=30)
def sched_test():
"""
- redis
:return:
"""
seed = "123456789"
sa = []
for i in range(4):
sa.append(random.choice(seed))
code = ''.join(sa)
cache.set("test_"+code, code)
3)タイミングタスクの起動xi起動タイミングタスク
sched.start()
方式二:django-crontab
1)設置:
pip install django-crontab
2)INSTALL_にプロファイルを追加します。APPS中
INSTALLED_APPS = (
'django_crontab',
)
3)作成タイミング関数:djangoのアプリにtest_を新設します。crontab.pyファイルは、必要なタイミングで実行するコードを入れます。
import random
from django.core.cache import cache
def test():
"""
- redis
:return:
"""
seed = "123456789"
sa = []
for i in range(4):
sa.append(random.choice(seed))
code = ''.join(sa)
cache.set("test_"+code, code)
4)タイミングコマンドの作成Djangoはプロジェクトの各アプリケーションのmanagement/commandsディレクトリに以下の線を引いていないPythonモジュールにmanage.pyコマンドを登録しました。カスタムコマンドは以下の通りです。BaseCommandから引き継ぐCommandクラスを定義し、handle方法を実現しなければなりません。
appname/manage ment/command/test.pyファイルを作成する
import random
from django.core.management.base import BaseCommand
from django.core.cache import cache
class Command(BaseCommand):
"""
"""
def handle(self, *args, **options):
"""
:return:
"""
seed = "123456789"
sa = []
for i in range(4):
sa.append(random.choice(seed))
code = ''.join(sa)
cache.set("test_"+code, code)
定義が完了したら、python manage.py testを実行し、handle()関数を実行します。5)settings.pyに配置を追加する
#
CRONJOBS = [
('*/1 * * * *', 'appname.test_crontab.test','>>/home/python/test_crontab.log')
]
#
CRONJOBS = [
('*/1 * * * *', 'django.core.management.call_command', ['test'], {}, '>> /home/python/test.log'),
]
上には主に3つのパラメータがあります。それぞれは、タイミングタスクの実行時間(間隔)を表しています。実行待ちのタイミングタスクは、タイミングタスクの情報をファイルに追加します。Linuxのタイミングタスクを熟知している学生にとって、上の最初のパラメータの文法はとても親切かもしれません。上には、1分ごとにコードが実行されることを示しています。
linuxのタイミングタスクcrontabの文法は以下の通りです。
* * * * * command
(0-59) (0-23) (1-31) (1-12) (0-6) shell
例:
0 6 * * * commands >> /tmp/test.log # 6 , test.log
0 */2 * * * commands # 2
興味のある仲間はLinuxのcrontabタイミングタスクを深く研究することができます。6)タイミングタスクを追加して起動する
python manage.py crontab add
他のコマンド:
python manage.py crontab show:
python manage.py crontab remove:
今日の定時任務はここまでにします。間違いがあったら、交流を歓迎します。