Je veux écrire un script Python simple qui vérifiera s'il s'agit de 2 minutes avant une heure / minute donnée, puis appelle ma fonction chaque jour ou pour une date donnée à l'heure donnée.
Le script sera courir chaque minute dans un cronjob. p>
donc les deux cas pour exécuter mycée (): p>
10:55 tous les jours
10:55 le 9/28/2012 P>
Mais j'ai du mal à déterminer quand il est 2 minutes avant l'heure / minute donnée avec DateTime. Aussi, comment déterminer le quotidien vs juste un jour donné? P>
mydate = datetime(2012, 09,28, 10,55)
check = mydate - datetime.now() # gives you a timedelta
if check < datetime.timedelta(minutes=2):
run_myfunction()
4 Réponses :
now = datetime.now()
mystart = now.replace(hours=10, minutes=55, seconds=0)
myend = mystart + timedelta(minutes=2)
if mystart <= mydate < myend:
# do your stuff
Changer votre code comme celui-ci
mydate = datetime(2012, 09,2, 10,55)
current_date = datetime.now()
check = mydate - current_date # gives you a timedelta
if mydate > current_date and check < datetime.timedelta(minutes=2):
run_myfunction()
Il peut être pirate, mais vous pouvez utiliser de cette façon, si .total_seconds () code> pour construire une plage: alors - maintenant < / code> est un négatif timedelta code>, total_seconds () code> retournera un numéro négatif et rendra votre condition faux code>. p> p >
total_seconds () code> est disponible depuis Python 2.7
Pour la partie quotidienne, vous pouvez utiliser
delta = (now-today)
lapse = delta.days * 86400 + delta.seconds
if abs(lapse) <= 2*60:
run_function()
Pourquoi ne laissez-vous pas le script courir tous les jours à 10h55 par le cronjob?
Merci gars, je suis juste allé faire un chèque avec minutes = 0. Je suppose que j'aurais dû y penser plus avant de poster!