web-dev-qa-db-fra.com

Comment exécuter le script python dans les délais?

J'en ai deux Python scripts sur ma machine que je souhaite exécuter deux fois par jour sur une période spécifique. Comment automatiser cette tâche? Étant donné que je serai loin de chez moi et donc de mon ordinateur pendant un certain temps, je veux les télécharger sur un site et en être exécuté automatiquement sans que je fasse quoi que ce soit.

Comment puis-je faire ceci?

16
Zip

Vous pouvez utiliser cron pour cela si vous êtes sur une machine Linux. Cron est un démon système utilisé pour exécuter des tâches spécifiques à des moments spécifiques.

cron fonctionne sur le principe de crontab, un fichier texte avec une liste de commandes à exécuter à des heures spécifiées. Il suit un format spécifique, qui peut être expliqué en détail dans man 5 crontab

Format pour crontab

Chacune des sections est séparée par un espace, la dernière section contenant un ou plusieurs espaces. Aucun espace n'est autorisé dans les sections 1-5, seulement entre elles. Les sections 1 à 5 sont utilisées pour indiquer quand et à quelle fréquence vous souhaitez que la tâche soit exécutée. Voici comment se présente une tâche cron:

minute (0-59), heure (0-23, 0 = minuit), jour (1-31), mois (1-12), jour de semaine (0-6, 0 = dimanche), commande

01 04 1 1 1 /usr/bin/somedirectory/somecommand

L'exemple ci-dessus exécutera/usr/bin/somedirectory/somecommand à 4 h 01 le 1er janvier et tous les lundis de janvier. Un astérisque (*) peut être utilisé pour que chaque instance (chaque heure, chaque jour de la semaine, chaque mois, etc.) d'une période soit utilisée. Code:

01 04 * * * /usr/bin/somedirectory/somecommand

L'exemple ci-dessus exécutera/usr/bin/somedirectory/somecommand à 4 h 01 chaque jour de chaque mois.

Les valeurs séparées par des virgules peuvent être utilisées pour exécuter plusieurs instances d'une commande particulière au cours d'une période. Les valeurs séparées par des tirets peuvent être utilisées pour exécuter une commande en continu. Code:

01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand

L'exemple ci-dessus exécutera /usr/bin/somedirectory/somecommand à 01 et 31 après les heures de 4h00 et 5h00 du 1er au 15 janvier de chaque janvier et juin.

Le texte "/ usr/bin/somedirectory/somecommand" dans les exemples ci-dessus indique la tâche qui sera exécutée aux heures spécifiées. Il est recommandé d'utiliser le chemin d'accès complet aux commandes souhaitées, comme indiqué dans les exemples ci-dessus. Entrer which somecommand dans le terminal pour trouver le chemin complet vers somecommand. Le crontab commencera à fonctionner dès qu'il sera correctement édité et enregistré.

Vous voudrez peut-être exécuter un script un certain nombre de fois par unité de temps. Par exemple, si vous souhaitez l'exécuter toutes les 10 minutes, utilisez l'entrée crontab suivante (s'exécute sur des minutes divisibles par 10: 0, 10, 20, 30, etc.)

*/10 * * * * /usr/bin/somedirectory/somecommand

ce qui équivaut également au plus lourd

0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand

15
SanketDG

Sous Windows, j'ai trouvé deux solutions.

Première option: créer un fichier .bat.

Étape 1

Créez un fichier .bat pour indiquer la commande que vous souhaitez exécuter et le fichier de script qui sera exécuté, par exemple:

start C:\Users\userX\Python.exe C:\Users\userX\PycharmProjects\Automation_tasks\create_workbook.py

Étape 2

Ouvrez le Planificateur de tâches et cliquez sur la bibliothèque du Planificateur de tâches pour voir les tâches en cours qui sont exécutées. Cliquez sur l'option Créer une tâche.

Main window Task Scheduler

Étape 3

Dans l'onglet Général, mettez le nom de votre nouvelle tâche et cliquez sur l'option Run whether user is logged on or not, Cochez l'option Run with highest privileges Et assurez-vous de configurer la version appropriée de votre système d'exploitation (dans mon cas, j'ai choisi Windows 7, Windows Server 2008 R2.

High privileges

Étape 4

Dans l'onglet Actions, cliquez sur le bouton Nouveau et saisissez ce qui suit:

Dans Program/Scripts vous devez rechercher le chemin Powershell que le Planificateur de tâches invoquera pour exécuter le fichier .bat. Dans mon cas, mon chemin Powershell était: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Dans Ajouter des arguments (facultatif) vous devez taper le chemin du fichier qui sera exécuté par Powershell. Dans mon cas, le chemin était:

C:\Users\userX\Desktop\run_the_bat_file.bat

Dans Commencez par (facultatif) vous devez taper le chemin du fichier mais sans le nom du fichier .bat, c'est-à-dire:

C:\Users\userX\Desktop\

Configure the settings for Powershell

Étape 5

Cliquez sur l'onglet Déclencheurs et sélectionnez la fréquence à laquelle vous souhaitez exécuter cette tâche.

Frequency of the task to be executed

Étape 6

Enfin, testez votre tâche pour voir si elle fonctionne vraiment en la sélectionnant dans la bibliothèque du Planificateur de tâches et en cliquant sur l'option Exécuter.

Test your task

Deuxième option: exécuter le fichier .py avec le planificateur de tâches

Étape 1

Ouvrez le Planificateur de tâches et cliquez sur la bibliothèque du Planificateur de tâches pour voir les tâches en cours qui sont exécutées. Cliquez sur l'option Créer une tâche.

Main window Task Scheduler

Étape 2

Dans l'onglet Général, mettez le nom de votre nouvelle tâche et cliquez sur l'option Run whether user is logged on or not, Cochez l'option Run with highest privileges Et assurez-vous de configurer la version appropriée de votre système d'exploitation (dans mon cas, j'ai choisi Windows 7, Windows Server 2008 R2.

High privileges

Étape 3

Dans l'onglet Actions, cliquez sur le bouton Nouveau et saisissez ce qui suit:

Dans Program/Scripts vous devez rechercher le chemin Python.exe que le Planificateur de tâches invoquera pour exécuter le script python. Dans mon cas, mon chemin Python.exe était: C:\Users\userX\python.exe

Dans Ajouter des arguments (facultatif) vous devez seulement taper le nom de votre script python. Dans mon cas, le chemin était:

Permissions_dump.py

Dans Commencez par (facultatif) vous devez taper le chemin du fichier mais sans le nom du script python, c'est-à-dire:

C:\Users\userX\PycharmProjects\1099_vendors_costs

Python configuration

Étape 4

Cliquez sur l'onglet Déclencheurs et sélectionnez la fréquence à laquelle vous souhaitez exécuter cette tâche.

Frequency of the task to be executed

Étape 5

Enfin, testez votre tâche pour voir si elle fonctionne vraiment en la sélectionnant dans la bibliothèque du Planificateur de tâches et en cliquant sur l'option Exécuter.

Test your task

Une autre option (au cas où vous convertiriez un .py en un .exe)

Si vous utilisez la bibliothèque Cx_Freeze pour convertir un .py en .exe et que vous souhaitez utiliser le planificateur de tâches pour automatiser cette tâche, vous devez suivre ces étapes:

Étape 1

Cliquez sur Créer une tâche, puis sur l'onglet Actions pour saisir ce qui suit:

Dans Program/Scripts vous devez rechercher le chemin C:\Windows\Explorer.exe Que le Planificateur de tâches invoquera pour exécuter le script .exe.

Dans Ajouter des arguments (facultatif) vous devez seulement saisir le nom de votre fichier .exe: CustomerPopulation.exe

Dans Commencez par (facultatif) vous devez taper le chemin du fichier mais sans le nom du fichier .exe, c'est-à-dire:

C:\Users\userX\PycharmProjects\executables

exe parameters

Les références:

  1. https://gis.stackexchange.com/questions/140110/running-python-script-in-task-scheduler-script-will-not-run?newreg=603bcdbc381b41a283e5d8d0561b835e
  2. https://www.youtube.com/watch?v=oJ4nktysxnE
  3. https://www.youtube.com/watch?v=n2Cr_YRQk7o
5
abautista

Si vous utilisez OSX, alors launchd est le moyen préféré de planifier des tâches. Il y a une CLI OSX pour launchd appelée launchctl mais si vous préférez une interface graphique, ma préférée est launchcontrol .

1
yothenberg