Task scheduling is essential for automating repetitive jobs like data backups, report generation, and notifications. Python offers multiple ways to schedule tasks, including schedule
, APScheduler
, Celery
, and system-based schedulers like cron (Linux/Mac) or Task Scheduler (Windows).
Why Schedule Tasks?
Automate repetitive tasks
Run scripts at specific times (e.g., daily, weekly)
Improve efficiency and reduce manual workload
Schedule background jobs in web applications
1. Using schedule
for Simple Task Scheduling
The schedule
module allows running functions at a specific time.
Installation:
pip install schedule
Example: Run a Task Every 10 Seconds
import schedule
import time
def job():
print("Task executed!")
# Schedule the job every 10 seconds
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
Now the task runs every 10 seconds automatically!
2. Scheduling Tasks at Specific Times
Run a Task Every Day at 9 AM
schedule.every().day.at("09:00").do(job)
Run a Task on Mondays
schedule.every().monday.at("08:00").do(job)
Run a Task Every Hour
schedule.every().hour.do(job)
Now the task executes at scheduled times!
3. Using APScheduler
for Advanced Scheduling
APScheduler
is more powerful and supports background jobs.
Installation:
pip install apscheduler
Example: Run a Job Every 5 Minutes
from apscheduler.schedulers.blocking import BlockingScheduler
def my_task():
print("Task executed!")
scheduler = BlockingScheduler()
scheduler.add_job(my_task, 'interval', minutes=5)
scheduler.start()
Now the task runs every 5 minutes!
4. Using Celery for Distributed Task Scheduling
Celery
is useful for handling background jobs in web applications.
Installation:
pip install celery
Example: Running a Background Task
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def my_task():
print("Executing background task!")
Now Celery runs tasks asynchronously in the background!
5. Using cron
(Linux/Mac) for Task Scheduling
cron
allows running scripts at specific times.
Open crontab Editor:
crontab -e
Example: Run a Script Every Day at 7 AM
0 7 * * * /usr/bin/python3 /path/to/script.py
Now the Python script executes daily at 7 AM!
6. Using Windows Task Scheduler
On Windows, Task Scheduler can automate Python scripts.
Steps:
1️⃣ Open Task Scheduler → Click Create Basic Task
2️⃣ Set a trigger (e.g., daily, weekly)
3️⃣ Set the action → Start a Program
4️⃣ Browse and select python.exe
5️⃣ Add script path as an argument
6️⃣ Save and enable the task
Now the script runs automatically in Windows!