Scheduling Randomized Daily Reports with APScheduler

  • Share this:

Code introduction


This code defines a function `send_daily_report` that is used to send a daily report. Another function `generate_random_date` is used to generate a random date within the next 7 days. The `schedule_report` function uses the APScheduler library to schedule the report to be sent at a random time within the next 7 days.


Technology Stack : APScheduler, datetime

Code Type : Timed task

Code Difficulty : Intermediate


                
                    
from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta
import random

def send_daily_report():
    # This function sends a daily report by email
    with open("daily_report.txt", "r") as file:
        report_content = file.read()
    
    # Simulating sending an email
    print(f"Report sent at {datetime.now()}: {report_content}")

def generate_random_date():
    # Generates a random date within the next 7 days
    delta = random.randint(1, 7)
    random_date = datetime.now() + timedelta(days=delta)
    return random_date

def schedule_report():
    # This function schedules the daily report to be sent at a random time within the next 7 days
    scheduler = BackgroundScheduler()
    random_date = generate_random_date()
    scheduler.add_job(send_daily_report, 'date', run_date=random_date)
    scheduler.start()
    print(f"Report scheduled to be sent on {random_date}")