How to run a python script at a specific time(s)
I'd like to write a simple python script for doing a specific job. I'开发者_如何学JAVAm getting some time and link information from a web site.
times=
[
('17.04.2011', '06:41:44', 'abc.php?xxx'),
('17.04.2011', '07:21:31', 'abc.php?yyy'),
('17.04.2011', '07:33:04', 'abc.php?zzz'),
('17.04.2011', '07:41:23', 'abc.php?www'),]
What is the best way to click these links at the right time? Do I need to calculate the time interval between the current and the one in list and sleep for a while?
I'm really stuck at this point and open to any ideas which could be useful.
Take a look at Python's sched module.
you can use schedule module and it is easy to use and will satisfy your requirement.
you can try something like this.
import datetime, schedule, requests, time
TIME = [('17.04.2011', '06:41:44', 'abc.php?xxx'),
('17.04.2011', '07:21:31', 'abc.php?yyy'),
('17.04.2011', '07:33:04', 'abc.php?zzz'),
('17.04.2011', '07:41:23', 'abc.php?www')]
def job():
global TIME
date = datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S")
for i in TIME:
runTime = i[0] + " " + i[1]
if i and date == str(runTime):
requests.get(str(i[2]))
schedule.every(0.01).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
I have use request module and get method to call those URL. You can write whichever methods suits you.
This may help: How do I get a Cron like scheduler in Python? It is about cron-like scheduling in Python. And yes, it is based on sleeps.
I finally made and used this.
import time,datetime
def sleep_till_future(f_minute):
"""The function takes the current time, and calculates for how many seconds should sleep until a user provided minute in the future."""
t = datetime.datetime.today()
future = datetime.datetime(t.year,t.month,t.day,t.hour,f_minute)
if future.minute <= t.minute:
print("ERROR! Enter a valid minute in the future.")
else:
print "Current time: " + str(t.hour)+":"+str(t.minute)
print "Sleep until : " + str(future.hour)+":"+str(future.minute)
seconds_till_future = (future-t).seconds
time.sleep( seconds_till_future )
print "I slept for "+str(seconds_till_future)+" seconds!"
精彩评论