이 글은 Django에서 예정된 작업을 사용하는 두 가지 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
오늘은 Django에서 예약된 작업을 사용하는 두 가지 방법을 소개합니다.
방법 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는 이름이 밑줄로 시작하지 않는 Python 모듈을 각 응용 프로그램 아래의 관리/명령 디렉터리에 등록합니다. 프로젝트 관리.py 명령, 다음과 같이 명령을 사용자 정의하십시오. BaseCommand에서 상속되는 Command 클래스를 정의하고 핸들 메소드를 구현해야 합니다.
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)
정의가 완료된 후 pythonmanage.py 테스트를 실행하면 handler() 함수가 실행됩니다
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의 예약된 작업 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에서 예약된 작업을 사용하는 두 가지 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!