Как запустить python script в определенное время (ы)

Я хочу написать простой python script для выполнения определенного задания. Я получаю некоторое время и ссылку на информацию с веб-сайта.

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'),]

Каков наилучший способ щелкнуть по этим ссылкам в нужное время? Нужно ли мне время от времени вычислять временной интервал между текущим и списком и спать?

Я действительно застрял в этой точке и открываю любые идеи, которые могут быть полезны.

Ответ 1

Посмотрите на модуль Python sched.

Ответ 2

вы можете использовать модуль расписания, и он прост в использовании и будет удовлетворять вашим требованиям.

вы можете попробовать что-то вроде этого.

import datetime, schedule, request

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):
            request.get(str(i[2]))

schedule.every(0.01).minutes.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

У меня есть модуль запроса на использование и метод get для вызова этих URL. Вы можете написать то, что вам подходит.

Ответ 4

Я наконец сделал и использовал это.

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.
    """
    import time,datetime


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