Link Search Menu Expand Document
El Libro De Python (24.95 €) 39.95 €

Programar tareas con schedule

Usando la librería schedule puedes programar tareas para que se ejecuten cada cierto intervalo. En este ejemplo ejecutamos tarea una vez cada 10 minutos.

import schedule
import time
from datetime import datetime

def tarea():
    print(f"{datetime.now()}: Tu tarea")

schedule.every(10).minutes.do(tarea)

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

Es importante notar el uso de sleep(1). Al tener un bucle while infinito, sin este pequeño sleep nuestro programa estaría continuamente ejecutando el bucle y sería un desperdicio de recursos.

Por otro lado, aunque este ejemplo funciona perfectamente y es válido para la mayoría de los casos, es posible que quieras usar un thread distinto.

Con el ejemplo anterior, si tarea tarda en ejecutarse más de 10 minutos, estaría bloqueando la siguiente ejecución. Esto haría que tu tarea ya no se ejecutase cada 10 minutos. La tarea podría bloquear la siguiente ejecución.

Si quieres que tu tarea se ejecute exactamente cada 10 minutos sin importar que tarea tarde, por ejemplo, 11 minutos, puedes hacer lo siguiente.

import schedule
import time
import threading
from datetime import datetime

def tarea():
    print(f"{datetime.now()}: Tu tarea")

def tarea_threaded():
    task_thread = threading.Thread(target=tarea)
    task_thread.start()

schedule.every(10).minutes.do(tarea_threaded)

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

✏️ Ejercicios:

  • En vez de ejecutar tarea cada cierto intervalo, usa schedule para ejecutarla todos los días a las 23:59.