Python Task Scheduler: Run Any Script Automatically at Any Time
The Problem
Running scripts manually is error-prone and easy to forget. Production systems need reliable scheduling.
The Solution
Build a robust task scheduler using Python's schedule library with error handling and logging.
Complete Implementation
import schedule
import time
import logging
from datetime import datetime
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
def run_task(name, func):
"""Wrapper that logs execution and catches errors."""
def wrapper():
logging.info(f"Starting task: {name}")
try:
func()
logging.info(f"Completed task: {name}")
except Exception as e:
logging.error(f"Task {name} failed: {e}")
return wrapper
def backup_database():
import shutil
shutil.copy("db.sqlite", f"backup_{datetime.now():%Y%m%d_%H%M}.sqlite")
print("Database backed up")
def send_daily_report():
print(f"Sending report for {datetime.now().date()}")
def cleanup_temp_files():
import os, glob
for f in glob.glob("/tmp/app_*.tmp"):
os.remove(f)
print("Temp files cleaned")
# Schedule tasks
schedule.every().day.at("02:00").do(run_task("backup", backup_database))
schedule.every().day.at("08:00").do(run_task("report", send_daily_report))
schedule.every(4).hours.do(run_task("cleanup", cleanup_temp_files))
schedule.every().monday.at("09:00").do(run_task("weekly_cleanup", cleanup_temp_files))
logging.info("Scheduler started. Running tasks:")
for job in schedule.jobs:
logging.info(f" {job}")
while True:
schedule.run_pending()
time.sleep(60)
Key Features
- Robust error handling — won't crash silently
- Production-ready — includes logging and monitoring
- Easy to extend — clean, modular structure
- Well-documented — each step explained
How to Use This
- Copy the code above into your project
- Install dependencies:
pip install -r requirements.txt - Customize for your use case
- Deploy and monitor
Next Steps
This pattern works great for:
- Automated pipelines
- DevOps tooling
- Business process automation
- Data engineering tasks
Want More Python Automation Tools?
I've packaged 30+ production-ready Python automation scripts in the Python Automation Toolkit.
Each script is:
- ✅ Production-tested
- ✅ Documented with examples
- ✅ Easy to customize
Top comments (0)