2 votes

Méthode chronométrée en Python

Comment faire pour qu'une partie du script de python (seulement une méthode, l'ensemble du script s'exécute en 24/7) s'exécute tous les jours à une heure donnée, exactement toutes les 20 minutes ? Comme 12:20, 12:40, 13:00 dans chaque heure.

Je ne peux pas utiliser cron, j'ai essayé l'exécution périodique mais ce n'est pas aussi précis que je le voudrais.... Cela dépend de l'heure de démarrage du script.

0voto

gonczor Points 2221

Vous pouvez soit mettre l'appel de cette méthode dans une boucle, qui resterait en veille pendant un certain temps.

from time import sleep
while True:
    sleep(1200)
    my_function()

et être déclenché une fois de temps en temps, vous pourriez utiliser datetime pour comparer l'horodatage actuel et définir les prochaines exécutions.

import datetime

function_executed = False
trigger_time = datetime.datetime.now()

def set_trigger_time():
    global function executed = False
    return datetime.datetime.now() + datetime.timedelta(minutes=20)

while True:
    if function_executed:
        triggertime = set_trigger_time()

    if datetime.datetime.now() == triggertime:
        function_executed = True
        my_function()

Je pense cependant que faire un appel système le script serait une solution plus sympa.

0voto

turkus Points 1949

Utilisez par exemple redis pour cela et rq-scheduler paquet. Vous pouvez planifier des tâches avec un temps spécifique. Ainsi, vous pouvez exécuter le premier script, enregistrer dans la variable l'heure de début, calculer l'heure de début + 20 minutes et si votre script actuel se termine, à la fin vous pousserez une autre, la même tâche avec l'heure appropriée.

0voto

Stanislav Ivanov Points 762

Module calendrier peut être utile à cet effet. Voir la réponse à Comment obtenir un programmateur de type Cron en Python ? pour les détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X