开发者

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!"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜