この記事では、Django でスケジュールされたタスクを使用する 2 つの方法を紹介します。これには一定の参考価値があります。必要な友人は参照できます。お役に立てば幸いです。
今日は、Django でスケジュールされたタスクを使用する 2 つの方法を紹介します。
方法 1: 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) スケジュールされたタスクの開始
# 启动定时任务 sched.start()
方法 2: django-crontab
1) インストール:
pip install django-crontab
2) INSTALL_APPS に設定を追加
INSTALLED_APPS = (
'django_crontab',
)
3) 書き込みタイミング関数:
在django的app中新建一个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/management/commands/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 つの主なパラメータがあり、それぞれ次のことを表します: スケジュールされたタスクの実行時間 (間隔)、実行されるスケジュールされたタスク、ファイルへのスケジュールされたタスク情報の追加
For Linux のタイミングに精通している学生 タスク crontab を使用する学生は、上記の最初のパラメータの構文に精通している可能性があります。上記は、コードが 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: 删除所有定时任务
今日のスケジュールされたタスクは以上です。エラーがある場合は、お気軽に共有してください。訂正してください!
以上がDjango でスケジュールされたタスクを使用する 2 つの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。