Message
par piper » mar. 10 août 2021 20:38
Bonsoir.
Si j'ai bien compris, tu souhaiterais faire en python un formulaire (donc en mode fenêtre) qui permettrait de dire quand aura lieu le prochain envoi ?
ou quelle est la prochaine périodicité ?
Moi, j'utiliserai at ("at time")
at permet de déclencher prochainement des jobs.
Tu peux dire : tel jour à telle heure ou à telle heure ou dans tant de temps.
Ex : ta fenêtre dit à 12h, toutes les 2h , il est 11h30.
Ta fenêtre renseigne at pour que le job démarre à 12h et supprime l'ancienne programmation (si existe)
ton script démarre par at à 12h fait le travail et prépare le prochain passage à 12h + 2h = 14h
A 13h15, l'utilisateur revient sur la fenêtre et décide que c'est maintenant 1 fois toutes les 25h.
A la validation, ta fenêtre supprime la programmation de 14h et met la prochaine à 12h + 25h = 13h le lendemain.
At est plus facile à utiliser que crontab lorsqu'il s'agit de paramétrage qui doivent changer souvent par l'action d'un utilisateur via une application.
Les commandes :
atq : (q = query = demande) : liste les prochain jobs avec leur id)
atrm id : supprime la programmation du job numéro id
at 09:00 -f /home/linuxize/script.sh : lance le script à 9h00 (s'il est 8h50, c'est dans 10 minutes, s'il est 10h30, c'est demain)
at 1pm + 2 days -f /home/linuxize/script.sh : lance le script à 13h00 dans 2 jours
at dépend du service atd et s'installe via apt install at
Par contre pour une planification gérée exclusivement par un administrateur , là, je préfère crontab. L'administrateur utilisant la commande crontab -e pour mettre dans l'éditeur associé (nano ou vi), le paramétrage qui va bien à la main.
Et pour que python puisse lancer at : on utilise la fonction os.system
import os
os.system("atq | grep 'monscript.sh | cut -d$''\t' -f1")
Ceci renvoie tout les jobid de monscript.sh que at va prochainement lancer (1ère colonne : f1 - de retour d'un tableau dont le séparateur est la tabulation (\t))
1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32