Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in zwei Methoden zur Verwendung geplanter Aufgaben in Django

Einführung in zwei Methoden zur Verwendung geplanter Aufgaben in Django

不言
不言Original
2018-09-26 17:53:232980Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in zwei Methoden zur Verwendung geplanter Aufgaben in Django. Ich hoffe, dass er für Freunde hilfreich ist.

Heute stellen wir zwei Möglichkeiten vor, geplante Aufgaben in Django zu verwenden.

Methode 1: APScheduler
1) Installation:

pip install apscheduler

2) Verwendung:

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) Geplante Aufgabe starten

# 启动定时任务
sched.start()

Methode 2: django-crontab
1) Installation:

pip install django-crontab

2) Konfiguration zu INSTALL_APPS hinzufügen
INSTALLED_APPS = (

'django_crontab',

)
3) Timing-Funktion schreiben:

在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) Geplante Befehle schreiben
Django registriert einen manage.py-Befehl für Python-Module, deren Namen nicht mit einem Unterstrich beginnen, im Verzeichnis „management/commands“ jeder Anwendung im Projekt. Passen Sie einen Befehl wie folgt an: Erforderlich Definieren eine Command-Klasse, die von BaseCommand erbt und die Handle-Methode implementiert.
Schreiben Sie die Datei 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)

Nachdem die Definition abgeschlossen ist, führen Sie python manage.py test aus. Die Funktion handle() wird ausgeführt

5 ) In den Einstellungen.py Konfiguration hinzufügen

# 运行定时函数
CRONJOBS = [
    ('*/1 * * * *', 'appname.test_crontab.test','>>/home/python/test_crontab.log')
]

# 运行定时命令
CRONJOBS = [
    ('*/1 * * * *', 'django.core.management.call_command', ['test'], {}, '>> /home/python/test.log'),
]

Es gibt oben drei Hauptparameter, die jeweils darstellen: Ausführungszeit der geplanten Aufgabe (Intervall), auszuführende geplante Aufgabe, Informationen zur geplanten Aufgabe an die Datei anhängen
Für Diejenigen, die mit dem Timing unter Linux vertraut sind. Schüler, die die Task-Crontab verwenden, sind möglicherweise mit der Syntax des ersten Parameters oben sehr vertraut. Das Obige zeigt an, dass der Code alle 1 Minute ausgeführt wird.

Die Syntax von Crontab für geplante Aufgaben unter Linux lautet wie folgt:

*  *  *  *  * command
分钟(0-59) 小时(0-23) 每个月的哪一天(1-31) 月份(1-12) 周几(0-6) shell脚本或者命令

Beispiel:

0 6 * * * commands >> /tmp/test.log # 每天早上6点执行, 并将信息追加到test.log中
0 */2 * * * commands # 每隔2小时执行一次

Interessierte Freunde können die geplanten Crontab-Aufgaben von Linux eingehend studieren.

6) Geplante Aufgaben hinzufügen und starten

python manage.py crontab add

Andere Befehle:

python manage.py crontab show: 显示当前的定时任务
python manage.py crontab remove: 删除所有定时任务

Das war's für die heutigen geplanten Aufgaben, bitte teilen und korrigieren ich!

Das obige ist der detaillierte Inhalt vonEinführung in zwei Methoden zur Verwendung geplanter Aufgaben in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn