222. Task Scheduling with APScheduler
🔹 1. Installing APScheduler
pip install apscheduler✅ Fix: Install APScheduler before using it.
🔹 2. Basic APScheduler Job Example
from apscheduler.schedulers.blocking import BlockingScheduler
def job():
print("Hello, APScheduler!")
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', seconds=5) # Runs every 5 seconds
scheduler.start()✅ Fix: BlockingScheduler() runs indefinitely until manually stopped.
🔹 3. Scheduling a Job at a Specific Time
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime, timedelta
def scheduled_task():
print("Scheduled task executed!")
scheduler = BlockingScheduler()
run_time = datetime.now() + timedelta(seconds=10) # Runs 10 seconds from now
scheduler.add_job(scheduled_task, 'date', run_date=run_time)
scheduler.start()✅ Fix: date trigger runs once at a specific time.
🔹 4. Scheduling a Recurring Job (Every Minute)
✅ Fix: BackgroundScheduler() runs in non-blocking mode.
🔹 5. Using Cron Jobs (Run at a Specific Time Daily)
✅ Fix: cron trigger allows precise time-based scheduling.
🔹 6. Passing Arguments to Scheduled Functions
✅ Fix: Use args to pass arguments to scheduled functions.
🔹 7. Listing All Scheduled Jobs
✅ Fix: scheduler.get_jobs() retrieves all active jobs.
🔹 8. Pausing and Resuming Jobs
✅ Fix: pause_job() and resume_job() temporarily disable and enable jobs.
🔹 9. Removing a Scheduled Job
✅ Fix: remove_job('job_id') permanently deletes a job.
🔹 10. Stopping the Scheduler Gracefully
✅ Fix: scheduler.shutdown() stops all tasks safely.
🚀 Summary: Why Use APScheduler?
One-time execution
✅ date trigger for scheduled one-time jobs
Recurring execution
✅ interval trigger for repeated jobs
Cron-like scheduling
✅ cron trigger for daily/hourly jobs
Background scheduling
✅ BackgroundScheduler() for non-blocking execution
Job control
✅ Pause, resume, or remove jobs dynamically
🚀 When to Use APScheduler?
Running periodic background tasks
✅ Yes
Replacing cron jobs with Python
✅ Yes
Automating data collection or cleanup
✅ Yes
Triggering scheduled API calls
✅ Yes
Replacing Celery for lightweight scheduling
✅ Yes (but not for distributed tasks)
Last updated