Introduction à deux méthodes d'utilisation des tâches planifiées dans Django

不言
Libérer: 2018-09-26 17:53:23
original
2985 Les gens l'ont consulté

Cet article vous présente deux méthodes d'utilisation des tâches planifiées dans Django. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Aujourd'hui, nous présentons deux façons d'utiliser les tâches planifiées dans Django.

Méthode 1 : APScheduler
1) Installation :

pip install apscheduler
Copier après la connexion

2) Utilisation :

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)
Copier après la connexion

3) Démarrer la tâche planifiée

# 启动定时任务
sched.start()
Copier après la connexion

Méthode 2 : django-crontab
1) Installation :

pip install django-crontab
Copier après la connexion

2) Ajouter la configuration à INSTALL_APPS
INSTALLED_APPS = (

'django_crontab',
Copier après la connexion

)
3) Ecrire des fonctions temporisées :

在django的app中新建一个test_crontab.py文件,把需要定时执行的代码放进去
Copier après la connexion
    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)
Copier après la connexion

4) Ecrire des commandes temporisées
Django remplace les modules Python dont les noms ne commencent pas par un trait de soulignement dans le répertoire gestion/commands de chaque application du projet . Une commande manage.py est enregistrée et une commande personnalisée est la suivante : Vous devez définir une classe Command qui hérite de BaseCommand et implémenter la méthode handle.
Écrivez le fichier 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)
Copier après la connexion

Une fois la définition terminée, exécutez le test python manage.py, la fonction handle() sera exécutée

5) Dans les paramètres, ajoutez la configuration dans .py

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

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

Il y a trois paramètres principaux ci-dessus, qui représentent : le temps d'exécution des tâches planifiées (intervalle), les tâches planifiées à exécuter et l'ajout d'informations sur les tâches planifiées au file
Pour les étudiants qui sont familiers avec la tâche planifiée crontab sous Linux, ils connaissent peut-être la syntaxe du premier paramètre ci-dessus. Ce qui précède indique que le code sera exécuté toutes les minutes.

La syntaxe de crontab pour les tâches planifiées sous Linux est la suivante :

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

Exemple :

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

Les amis intéressés peuvent se plonger dans les tâches planifiées crontab de Linux .

6) Ajouter et démarrer des tâches planifiées

python manage.py crontab add
Copier après la connexion

Autres commandes :

python manage.py crontab show: 显示当前的定时任务
python manage.py crontab remove: 删除所有定时任务
Copier après la connexion

C'est tout pour les tâches planifiées d'aujourd'hui S'il y a des erreurs, n'hésitez pas. pour les partager Correction!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal