djangoでタイミングタスクを使う方法を詳しく説明します。


今日はdjangoでのタイムミッションの2つの方法を紹介します。
方式一: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:         
今日の定時任務はここまでにします。間違いがあったら、交流を歓迎します。