Maison > développement back-end > Tutoriel Python > Gestion des tâches Cron basée sur Python

Gestion des tâches Cron basée sur Python

WBOY
Libérer: 2023-08-28 11:25:10
original
1167 Les gens l'ont consulté

Gestion des tâches Cron basée sur Python

Dans ce tutoriel, vous apprendrez l'importance des tâches cron et pourquoi vous en avez besoin. Vous verrez que le module python-crontab,一个与 crontab 交互的 Python 模块。您将学习如何使用 python-crontab exploite les tâches cron à partir d'un programme Python.

Qu'est-ce que Cron ?

Pendant l'administration du système, des tâches en arrière-plan doivent être exécutées sur le serveur pour effectuer les tâches de routine. Cron est un processus système utilisé pour effectuer régulièrement des tâches en arrière-plan. Cron nécessite un fichier nommé crontab qui contient une liste de tâches à exécuter à un moment précis. Toutes ces tâches sont exécutées en arrière-plan à des heures spécifiées.

Pour afficher les tâches cron en cours d'exécution sur votre système, accédez au terminal et saisissez :

crontab -l
Copier après la connexion
Copier après la connexion
Copier après la connexion

La commande ci-dessus affiche la liste des tâches dans le fichier crontab 文件中的作业列表。要将新的 cron 作业添加到 crontab. Pour ajouter une nouvelle tâche cron à

, saisissez :

crontab -e
Copier après la connexion
crontab 文件,您可以在其中安排作业。假设您有一个名为 hello.pyLa commande ci-dessus affichera le fichier

dans lequel vous pourrez planifier votre travail. Supposons que vous ayez un fichier appelé hello.py comme ceci :

print("Hello World")
Copier après la connexion

Maintenant, pour planifier une tâche cron afin d'exécuter le script ci-dessus pour le sortir dans un autre fichier, vous devez ajouter les lignes de code suivantes :

50 19 * * * python hello.py >> a.txt
Copier après la connexion
a.txtLa ligne de code ci-dessus planifie l'exécution du fichier et génère la sortie dans un fichier nommé

. Le numéro précédant la commande à exécuter définit le moment où le travail sera exécuté. La syntaxe de synchronisation comporte cinq parties :
  1. Minutes
  2. heures
  3. Un jour en janvier
  4. mois
  5. Jour de la semaine

L'astérisque (*) dans la syntaxe de synchronisation signifie qu'il s'exécutera à chaque fois.

Introduction à Python-Crontab

python-crontab 是一个 Python 模块,它提供对 cron 作业的访问,并使我们能够从 Python 程序操作 crontab 文件。它自动执行手动修改 crontab 文件的过程。要开始使用 python-crontab

est un module Python qui donne accès aux tâches cron et nous permet de manipuler

fichiers à partir d'un programme Python. Il automatise le processus de modification manuelle des python-crontab fichiers. Pour commencer

vous devez installer le module en utilisant pip :

pip install python-crontab
Copier après la connexion

Après l'installation de

, importez-le dans votre programme Python. python-crontab 模块来编写我们的第一个 cron 作业。创建一个名为 writeDate.py 的 Python 程序。在 writeDate.py 中,添加代码以将当前日期和时间打印到文件中。这是 writeDate.py

from crontab import CronTab
Copier après la connexion
Copier après la connexion

Écrivez votre premier travail Cron

Écrivons notre première tâche cron en utilisant le module

. Créez un programme Python appelé writeDate.py. Dans writeDate.py, ajoutez du code pour imprimer la date et l'heure actuelles dans un fichier. Voici à quoi ressemble writeDate.py : writeDate.py Python 程序每分钟运行一次。创建一个名为 scheduleCron.py

import datetime

with open('dateInfo.txt','a') as outFile:
    outFile.write('\n' + str(datetime.datetime.now()))
Copier après la connexion

Enregistrez les modifications ci-dessus.

CronTab 模块导入到 scheduleCron.pyCréons un autre programme Python qui planifiera les fichiers de

.

CronTab模块,我们来访问系统crontabPlace

au programme.

from crontab import CronTab
Copier après la connexion
Copier après la connexion
crontabÀ l'aide du module

, nous accédons au système

. scheduleCron.py

my_cron = CronTab(user='your username')
Copier après la connexion

La commande ci-dessus crée un accès utilisateur au système

. Parcourons les tâches cron et vous devriez pouvoir voir toute tâche cron créée manuellement pour un nom d'utilisateur spécifique. CronTab

for job in my_cron:
    print(job)
Copier après la connexion

Enregistrez les modifications et essayez d'exécuter

, vous devriez avoir une liste de tâches cron pour l'utilisateur spécifique (le cas échéant). Vous devriez pouvoir voir quelque chose comme ceci lors de l'exécution de la procédure ci-dessus :

50 19 * * * python hello.py >> a.txt # at 5 a.m every week with:
Copier après la connexion

Allons-y et créons une nouvelle tâche cron à l'aide du module dateInfo.txt. Vous pouvez utiliser la nouvelle méthode pour créer un nouveau cron et spécifier la commande à exécuter.

job = my_cron.new(command='python /home/jay/writeDate.py')
Copier après la connexion

Comme vous pouvez le voir dans la ligne de code ci-dessus, j'ai spécifié la commande à exécuter lors de l'exécution de la tâche cron. Une fois que vous avez une nouvelle tâche cron, vous devez planifier la tâche cron.

Planifions une tâche cron à exécuter toutes les minutes. Ainsi, à intervalles d'une minute, la date et l'heure actuelles seront ajoutées au fichier scheduleCron.py. Pour planifier l'exécution d'une tâche toutes les minutes, ajoutez la ligne de code suivante :

job.minute.every(1)
Copier après la connexion

Après avoir planifié le travail, vous devez écrire le travail dans l'onglet cron.

my_cron.write()
Copier après la connexion
Copier après la connexion

Voici le fichier crontab :

from crontab import CronTab

my_cron = CronTab(user='vaati')
job = my_cron.new(command='python3 /home/Desktop/vaati/writeDate.py')
job.minute.every(1)

my_cron.write()
Copier après la connexion

Enregistrez les modifications ci-dessus et exécutez le programme Python.

python scheduleCron.py
Copier après la connexion

Après exécution, vérifiez le fichier dateInfo.txt à l'aide de la commande suivante :

crontab -l
Copier après la connexion
Copier après la connexion
Copier après la connexion
🎜La commande ci-dessus devrait afficher la tâche cron nouvellement ajoutée. 🎜
* * * * * python3 home/vaati/Desktop/writeDate.py
Copier après la connexion
🎜Attendez un instant et vérifiez votre répertoire personnel et vous devriez pouvoir voir le fichier 🎜 avec la date et l'heure actuelles. Le fichier sera mis à jour toutes les minutes et la date et l'heure actuelles seront ajoutées au contenu existant. 🎜

更新现有的 Cron 作业

要更新现有的 cron 作业,您需要使用命令或使用 ID 来查找 cron 作业。使用 python-crontab 创建 cron 作业时,可以以注释的形式为 cron 作业设置 Id。以下是如何创建带有注释的 cron 作业:

job = my_cron.new(command='python3 home/vaati/Desktop/writeDate.py', comment='dateinfo')
Copier après la connexion

如上面的代码行所示,已使用注释 dateinfo 创建了一个新的 cron 作业。上述注释可用于查找 cron 作业。

您需要做的是迭代 crontab 中的所有作业,并使用注释 dateinfo 检查作业。这是代码:

 my_cron = CronTab(user='vaati')
 for job in my_cron:
     print(job)
Copier après la connexion

使用 job.comment 属性检查每个作业的评论。

 my_cron = CronTab(user='vaati')
 for job in my_cron:
     if job.comment == 'dateinfo':
         print(job)
Copier après la connexion

完成作业后,重新安排 cron 作业并写入 cron。完整代码如下:

from crontab import CronTab

my_cron = CronTab(user='vaati')
for job in my_cron:
    if job.comment == 'dateinfo':
        job.hour.every(10)
        my_cron.write()
        print('Cron job modified successfully')
Copier après la connexion

保存上述更改并执行 scheduleCron.py 文件。使用以下命令列出 crontab 文件中的项目:

crontab -l
Copier après la connexion
Copier après la connexion
Copier après la connexion

您应该能够看到带有更新的计划时间的 cron 作业。

* */10 * * * python3 /home/Desktop/vaati/writeDate.py # dateinfo
Copier après la connexion

从 Crontab 清除作业

python-crontab 提供了从 crontab 中清除或删除作业的方法。您可以根据计划、注释或命令从 crontab 中删除 cron 作业。

假设您想通过 crontab 中的注释 dateinfo 清除作业。代码是:

from crontab import CronTab

my_cron = CronTab(user='vaati')
for job in my_cron
    if job.comment == 'dateinfo':
        my_cron.remove(job)
        my_cron.write()
Copier après la connexion

同样,要根据评论删除作业,可以直接调用 my_cron 上的 remove 方法,无需任何迭代。这是代码:

my_cron.remove(comment='dateinfo')
Copier après la connexion

要删除 crontab 中的所有作业,可以调用 remove_all 方法。

my_cron.remove_all()
Copier après la connexion

完成更改后,使用以下命令将其写回 cron:

my_cron.write()
Copier après la connexion
Copier après la connexion

计算工作频率

要检查使用 python-crontab 执行作业的次数,您可以使用 Frequency 方法。获得作业后,您可以调用名为 Frequency 的方法,该方法将返回该作业在一年内执行的次数。

from crontab import CronTab

my_cron = CronTab(user='vaati')
for job in my_cron:
    print(job.frequency())
Copier après la connexion

要查看一小时内作业执行的次数,可以使用方法 Frequency_per_hour

my_cron = CronTab(user='vaati')
for job in my_cron:
    print(job.frequency_per_hour())
Copier après la connexion

要查看一天中的作业频率,可以使用方法 Frequency_per_day

检查作业计划

python-crontab 提供了检查特定作业的时间表的功能。为此,您需要在系统上安装 croniter 模块。使用 pip 安装 croniter

pip install croniter
Copier après la connexion

安装 croniter 后,调用作业上的调度方法来获取作业调度。

import datetime

sch = job.schedule(date_from=datetime.datetime.now())
Copier après la connexion

现在您可以使用 get_next 方法获取下一个作业计划。

print(sch.get_next())
Copier après la connexion

完整代码如下:

import datetime
from crontab import CronTab

my_crons = CronTab(user='vaati')
for job in my_crons:
    sch = job.schedule(date_from=datetime.datetime.now())
    print(sch.get_next())
Copier après la connexion

您甚至可以使用 get_prev 方法获取之前的时间表。

总结

在本教程中,您了解了如何开始使用 python-crontab 从 Python 程序访问系统 crontab。使用 python-crontab,您可以自动执行创建、更新和调度 cron 作业的手动过程。

您是否使用过 python-crontab 或任何其他库来访问系统 crontab ?我很想听听你的想法。请在论坛上告诉我们您的建议。

学习Python

无论您是刚刚入门还是希望学习新技能的经验丰富的程序员,都可以通过我们完整的 Python 教程指南学习 Python。

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!

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