Maison > Article > développement back-end > 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.
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
La commande ci-dessus affiche la liste des tâches dans le fichier crontab
文件中的作业列表。要将新的 cron 作业添加到 crontab
. Pour ajouter une nouvelle tâche cron à
crontab -e
crontab
文件,您可以在其中安排作业。假设您有一个名为 hello.py
La 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")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
a.txt
La 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 : L'astérisque (*) dans la syntaxe de synchronisation signifie qu'il s'exécutera à chaque fois.
python-crontab
是一个 Python 模块,它提供对 cron 作业的访问,并使我们能够从 Python 程序操作 crontab
文件。它自动执行手动修改 crontab
文件的过程。要开始使用 python-crontab
fichiers à partir d'un programme Python. Il automatise le processus de modification manuelle des python-crontab
fichiers. Pour commencer
pip install python-crontab
, importez-le dans votre programme Python. python-crontab
模块来编写我们的第一个 cron 作业。创建一个名为 writeDate.py
的 Python 程序。在 writeDate.py
中,添加代码以将当前日期和时间打印到文件中。这是 writeDate.py
from crontab import CronTabÉ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()))Enregistrez les modifications ci-dessus.
CronTab
模块导入到 scheduleCron.py
Créons un autre programme Python qui planifiera les fichiers de
CronTab
模块,我们来访问系统crontab
Place
from crontab import CronTab
crontab
À l'aide du module , nous accédons au système . scheduleCron.py
my_cron = CronTab(user='your username')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)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:
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')
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)
Après avoir planifié le travail, vous devez écrire le travail dans l'onglet cron.
my_cron.write()
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()
Enregistrez les modifications ci-dessus et exécutez le programme Python.
python scheduleCron.py
Après exécution, vérifiez le fichier dateInfo.txt
à l'aide de la commande suivante :
crontab -l🎜La commande ci-dessus devrait afficher la tâche cron nouvellement ajoutée. 🎜
* * * * * python3 home/vaati/Desktop/writeDate.py🎜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 作业,您需要使用命令或使用 ID 来查找 cron 作业。使用 python-crontab
创建 cron 作业时,可以以注释的形式为 cron 作业设置 Id。以下是如何创建带有注释的 cron 作业:
job = my_cron.new(command='python3 home/vaati/Desktop/writeDate.py', comment='dateinfo')
如上面的代码行所示,已使用注释 dateinfo
创建了一个新的 cron 作业。上述注释可用于查找 cron 作业。
您需要做的是迭代 crontab
中的所有作业,并使用注释 dateinfo
检查作业。这是代码:
my_cron = CronTab(user='vaati') for job in my_cron: print(job)
使用 job.comment
属性检查每个作业的评论。
my_cron = CronTab(user='vaati') for job in my_cron: if job.comment == 'dateinfo': print(job)
完成作业后,重新安排 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')
保存上述更改并执行 scheduleCron.py
文件。使用以下命令列出 crontab
文件中的项目:
crontab -l
您应该能够看到带有更新的计划时间的 cron 作业。
* */10 * * * python3 /home/Desktop/vaati/writeDate.py # dateinfo
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()
同样,要根据评论删除作业,可以直接调用 my_cron
上的 remove
方法,无需任何迭代。这是代码:
my_cron.remove(comment='dateinfo')
要删除 crontab
中的所有作业,可以调用 remove_all
方法。
my_cron.remove_all()
完成更改后,使用以下命令将其写回 cron:
my_cron.write()
要检查使用 python-crontab
执行作业的次数,您可以使用 Frequency
方法。获得作业后,您可以调用名为 Frequency
的方法,该方法将返回该作业在一年内执行的次数。
from crontab import CronTab my_cron = CronTab(user='vaati') for job in my_cron: print(job.frequency())
要查看一小时内作业执行的次数,可以使用方法 Frequency_per_hour
。
my_cron = CronTab(user='vaati') for job in my_cron: print(job.frequency_per_hour())
要查看一天中的作业频率,可以使用方法 Frequency_per_day
。
python-crontab
提供了检查特定作业的时间表的功能。为此,您需要在系统上安装 croniter
模块。使用 pip 安装 croniter
:
pip install croniter
安装 croniter
后,调用作业上的调度方法来获取作业调度。
import datetime sch = job.schedule(date_from=datetime.datetime.now())
现在您可以使用 get_next
方法获取下一个作业计划。
print(sch.get_next())
完整代码如下:
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())
您甚至可以使用 get_prev
方法获取之前的时间表。
在本教程中,您了解了如何开始使用 python-crontab
从 Python 程序访问系统 crontab
。使用 python-crontab
,您可以自动执行创建、更新和调度 cron 作业的手动过程。
您是否使用过 python-crontab
或任何其他库来访问系统 crontab
?我很想听听你的想法。请在论坛上告诉我们您的建议。
无论您是刚刚入门还是希望学习新技能的经验丰富的程序员,都可以通过我们完整的 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!