Skip to content

[Help Wanted] apscheduler not running as the background process #184

@ratnapalshende

Description

@ratnapalshende

I am working on a project.
Below are the files from which the problem resides.

package structure

cli.py :

import click
from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler(daemon=True)

def func():
	print("scheduler running with interval....")

@click.command()
@click.option('--interval', type=int, default=5, help='Interval for the scheduler in seconds')
def start_scheduler(interval):
    scheduler.add_job(func, 'interval', seconds=interval)
    scheduler.start()
    try:
        # Keep the script running (use Ctrl+C to stop it)
        while True:
            pass
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()


@click.command()
def stop_scheduler():
        if scheduler.running:
            scheduler.shutdown()
            print("scheduler shut down")
        else:
            print("scheduler is not running")
        
@click.command()
def status_scheduler():
    if scheduler.running:
        print("Scheduler is running.")
    else:
        print("Scheduler is not running.")

setup.py :

""" This file is used for packaging the source code and command line interface"""

from setuptools import setup

setup(
    name='test_package',
    version='0.1.0',
    packages=['my_pack'],
    install_requires=['click','APScheduler'],
    entry_points={
        'console_scripts': [
            'start = my_pack.cli:start_scheduler'
            'status = my_pack.cli:status_scheduler',
            'stop = my_pack.cli:stop_scheduler',
        ],
    },
)

Output i am getting :

when i run start command on terminal it's not running in the background.
to exit from the the script I have to hit ctr+C.

Expected output :

when i give start command it should return me shell to type another commands and should run in the background until it's stopped manually.

$ start
$ 

Troubleshooting Steps Taken

  1. I've ensured that the scheduler is running in daemon mode by setting daemon=True.
  2. I've explicitly called scheduler.start() after adding jobs.
  3. I've checked the logs for any error messages related to the scheduler.
  4. I've verified that the scheduler is running within the correct environment.

Additional Context

python version : Python 3.10.12
Platform : #40~22.04.1-Ubuntu

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions