Django에서 예약된 작업을 사용하는 두 가지 방법 소개

不言
풀어 주다: 2018-09-26 17:53:23
원래의
2986명이 탐색했습니다.

이 글은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿