Python - Démarrer une Fonction à un Moment Donné
Comment puis-je exécuter une fonction dans Python, à un moment donné?
Par exemple:
run_it_at(func, '2012-07-17 15:50:00')
et il va exécuter la fonction func
à 2012-07-17 15:50:00.
J'ai essayé le sched.planificateur, mais il ne démarre pas ma fonction.
import time as time_module
scheduler = sched.scheduler(time_module.time, time_module.sleep)
t = time_module.strptime('2012-07-17 15:50:00', '%Y-%m-%d %H:%M:%S')
t = time_module.mktime(t)
scheduler_e = scheduler.enterabs(t, 1, self.update, ())
Que puis-je faire?
Ce système d'exploitation? Vous aurez probablement besoin de le faire fonctionner avec un programme externe de python, comme cron unix.
Pourquoi pas? De quel délai avez-vous mis pour
Comment avez-vous essayez d'utiliser
j'ai utilisé
Avez-vous appeler
Pourquoi pas? De quel délai avez-vous mis pour
enter
(en supposant que c'est ce que vous avez essayé)?Comment avez-vous essayez d'utiliser
sched.scheduler
?j'ai utilisé
sched.scheduler
parce que je l'ai googlé 🙂Avez-vous appeler
scheduler.run()
?OriginalL'auteur microo8 | 2012-07-17
Vous devez vous connecter pour publier un commentaire.
La lecture de la documentation de http://docs.python.org/py3k/library/sched.html:
Allant de que nous avons besoin de travailler sur un délai (en secondes)...
Ensuite utiliser
datetime.strptime
pour analyser '2012-07-17 15:50:00' (je vais laisser la chaîne de format pour vous)Vous pouvez ensuite utiliser
delay
à passer dans unthreading.Timer
instance, par exemple:now
etrun_at
par exemple, autour de l'heure d'été transitions. Convertir l'heure locale en temps UTC ou POSIX timestamp pour effectuer les calculs. Voir Rechercher si les 24 heures ont passé entre datetimes - Python.Vous pouvez utiliser
total_seconds
directement surtimedelta
:datetime.timedelta(hours=3).total_seconds()
OriginalL'auteur Jon Clements
Prendre un coup d'oeil à l'Avancée Python Planificateur, APScheduler: http://packages.python.org/APScheduler/index.html
Ils ont un exemple pour ce cas d'utilisation:
http://packages.python.org/APScheduler/dateschedule.html
OriginalL'auteur stephenbez
Voici une mise à jour de stephenbez réponse pour la version 3.5 de APScheduler à l'aide de Python 2.7:
mais alors, la réponse ne serait pas contribuer à sa réputation justifiée
OriginalL'auteur user1106278
Pourrait être intéressant d'installer cette bibliothèque: https://pypi.python.org/pypi/schedule, fondamentalement permet de faire tout ce que tu viens de décrire. Voici un exemple:
OriginalL'auteur daniel galarza
Je suis tombé sur le même problème: je ne pouvais pas obtenir de temps absolu événements enregistrés avec
sched.enterabs
d'être reconnu parsched.run
.sched.enter
a fonctionné pour moi si j'ai calculé undelay
, mais est difficile à utiliser, car je veux des travaux à exécuter à des moments précis de la journée, en particulier les zones de temps.Dans mon cas, j'ai trouvé que le problème était que le défaut
timefunc
dans lesched.scheduler
initialiseur n'est pastime.time
(comme dans le exemple), mais plutôttime.monotonic
.time.monotonic
n'a aucun sens "absolu" des calendriers, de la docs, "Le point de référence de la valeur retournée n'est pas défini, de sorte que seule la différence entre les résultats des appels consécutifs est valide."La solution pour moi a été d'initialiser le planificateur comme
scheduler = sched.scheduler(time.time, time.sleep)
Il est difficile de savoir si votre time_module.le temps est réellement le temps.de temps ou de temps.monotone, mais il fonctionne très bien lorsque je l'initialiser correctement.
OriginalL'auteur Eric Westphal
Simplement à la recherche d'un Moment de la Journée /de la Date de l'événement déclencheur:
tant que la date de "chaîne" est lié à une mise à jour du "temps" de la chaîne, il fonctionne comme un simple TOD fonction. Vous pouvez étendre la chaîne de caractères à une date et une heure.
si son vocabulaire de la commande ou de l'ordre chronologique de comparaison,
aussi longtemps que la chaîne représente un point dans le temps, la chaîne sera trop.
quelqu'un a gentiment proposé ce lien:
Comparaison de chaîne Technique Utilisée par Python
OriginalL'auteur mAd