DEV Community

Cover image for Running Scheduled Tasks in Python Using Schedule Library
HexShift
HexShift

Posted on

Running Scheduled Tasks in Python Using Schedule Library

Python has many tools for scheduling tasks, but the schedule library provides an incredibly clean and intuitive interface for setting up cron-like jobs. It’s perfect for lightweight, code-driven automation without diving into OS-level cron syntax.

Step 1: Install the Schedule Library

pip install schedule

Step 2: Write Your Scheduled Task

Here’s a basic job that runs every 10 seconds:

import schedule
import time

def job():
    print("Running scheduled task...")

schedule.every(10).seconds.do(job)

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

Step 3: Flexible Timing Options

You can schedule tasks using intuitive syntax:

# Every minute
schedule.every().minute.do(job)

# Every Monday at 8:30 AM
schedule.every().monday.at("08:30").do(job)

Step 4: Cancel or Clear Jobs

You can stop or clear scheduled tasks if needed:

# Cancel a job
job_instance = schedule.every().hour.do(job)
schedule.cancel_job(job_instance)

# Clear all jobs
schedule.clear()

Step 5: Running as a Background Service

To run this as a background process, consider wrapping it in a script that can be launched by systemd, Docker, or a serverless function trigger if needed.

Pros & Cons of Using schedule in Python

  • ✅ Pros:
    • Extremely readable and Pythonic API
    • No need to understand cron syntax
    • Perfect for lightweight jobs or scripts
  • ⚠️ Cons:
    • Not ideal for long-term or high-availability production tasks
    • No built-in persistence (won’t survive process restarts)
    • May require additional layers (like systemd or Docker) for reliability

Alternatives: For more robust job scheduling, consider:

  • APScheduler – more powerful, supports persistence
  • System-level cron jobs if you prefer declarative scheduling
  • Celery Beat for distributed and persistent task queues

Conclusion

If you’re building a script or service that needs to run on a schedule and you want to stay within the Python ecosystem, schedule offers a clean and productive approach. For anything more complex or production-grade, pair it with process management or explore more robust libraries.

If this post helped you, consider supporting me: buymeacoffee.com/hexshift

Top comments (0)