2011-04-15 37 views
9

Me gustaría escribir un script de python simple para hacer un trabajo específico. Recibo algo de tiempo y enlaces de información de un sitio web.Cómo ejecutar un script de Python en un horario específico

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

¿Cuál es la mejor manera de hacer clic en estos enlaces en el momento adecuado? ¿Necesito calcular el intervalo de tiempo entre el actual y el que está en la lista y dormir por un tiempo?

Estoy realmente atascado en este punto y abierto a cualquier idea que pueda ser útil.

+0

posible duplicado de [Python Timed-Script] (http://stackoverflow.com/questions/5657429/python-timed-script) –

+0

víctima de http://stackoverflow.com/questions/5657429/python-timed- script/5658088 # 5658088 –

Respuesta

8

Eche un vistazo al módulo sched de Python.

3

This pueden ayudar. Se trata de la programación tipo cron en Python. Y sí, está basado en duerme.

1

Finalmente hice y usé esto.

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

puede utilizar el módulo de programación y es fácil de usar y satisfará sus necesidades.

puede intentar algo como esto.

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) 

Tengo el módulo de solicitud de uso y obtengo el método para llamar a esas URL. Puede escribir los métodos que le convengan.

Cuestiones relacionadas