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

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

不言
Freigeben: 2018-09-26 17:53:23
Original
3031 Leute haben es durchsucht

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

3) Geplante Aufgabe starten

# 启动定时任务
sched.start()
Nach dem Login kopieren

Methode 2: django-crontab
1) Installation:

pip install django-crontab
Nach dem Login kopieren

2) Konfiguration zu INSTALL_APPS hinzufügen
INSTALLED_APPS = (

'django_crontab',
Nach dem Login kopieren

)
3) Timing-Funktion schreiben:

在django的app中新建一个test_crontab.py文件,把需要定时执行的代码放进去
Nach dem Login kopieren
    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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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'),
]
Nach dem Login kopieren

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脚本或者命令
Nach dem Login kopieren

Beispiel:

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

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

6) Geplante Aufgaben hinzufügen und starten

python manage.py crontab add
Nach dem Login kopieren

Andere Befehle:

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

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage