# APScheduler Background Scheduler

BackgroundScheduler is a scheduler provided by APScheduler that runs in the background as a separate thread.

Below is an example of a background scheduler.

import time
from datetime import datetime

from apscheduler.schedulers.background import BackgroundScheduler

sched = BackgroundScheduler()

def tick():
    print('Tick! The time is: %s' % datetime.now())

def main():
    sched.add_job(tick, 'interval', seconds=3)
    sched.start()

    try:
        while True:
            time.sleep(2)
    except (KeyboardInterrupt, SystemExit):
        sched.shutdown()

if __name__ == '__main__':
    main()

In this example, sched is a BackgroundScheduler instance. The main thread runs a while-loop sleeping forever; the scheduler thread triggers the job every 3 seconds. It only stops when you type Ctrl-C from your keyboard or send SIGINT to the process.

The method .start() returns immediately after executed, and a new thread is created. Note that when the main thread exits, the BackgroundScheduler thread exits too. The parameter .start(daemon=True) makes sure the entire program exits when all threads exits.

This scheduler is intended to be used when APScheduler has to co-exist with other applications. It runs in the background so that the main thread is not blocking.