Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BackgroundSchedule suddenly stops working after running for a period of time #870

Open
3 tasks done
1476339526 opened this issue Feb 21, 2024 · 2 comments
Open
3 tasks done
Labels

Comments

@1476339526
Copy link

1476339526 commented Feb 21, 2024

Things to check first

  • I have checked that my issue does not already have a solution in the FAQ

  • I have searched the existing issues and didn't find my bug already reported there

  • I have checked that my bug is still present in the latest release

Version

3.9.1

What happened?

I have set logging. getLogger ('apscheduler '). setLevel (logging. DEBUG), and it will be executed last from 07:20:00 on February 21, 2024. After that, the task will not be executed, and the service can still be accessed normally. I am using FastAPI. No abnormalities were found in the logs, and the obtained logs are as follows:

Log output

2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Added job "JobService.exec_compile" to job store "default"
2024-02-20 16:38:07 - INFO - Scheduler started
2024-02-20 16:38:07 - DEBUG - Looking for jobs to run
2024-02-20 16:38:07 - DEBUG - Next wakeup is due at 2024-02-20 16:38:40+08:00 (in 32.189897 seconds)
2024-02-20 16:38:40 - DEBUG - Looking for jobs to run
2024-02-20 16:38:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:38:40 CST)" (scheduled at 2024-02-20 16:38:40+08:00)
2024-02-20 16:38:40 - DEBUG - Next wakeup is due at 2024-02-20 16:38:50+08:00 (in 9.999347 seconds)
2024-02-20 16:38:50 - DEBUG - Looking for jobs to run
2024-02-20 16:38:50 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:38:50 CST)" (scheduled at 2024-02-20 16:38:50+08:00)
2024-02-20 16:38:50 - DEBUG - Next wakeup is due at 2024-02-20 16:39:00+08:00 (in 9.997473 seconds)
2024-02-20 16:38:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:39:00 CST)" executed successfully
2024-02-20 16:38:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:39:00 CST)" executed successfully
2024-02-20 16:39:00 - DEBUG - Looking for jobs to run
2024-02-20 16:39:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:39:00 CST)" (scheduled at 2024-02-20 16:39:00+08:00)
2024-02-20 16:39:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:39:00 CST)" (scheduled at 2024-02-20 16:39:00+08:00)
2024-02-20 16:39:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-20 16:39:00 CST)" (scheduled at 2024-02-20 16:39:00+08:00)
2024-02-20 16:39:00 - DEBUG - Next wakeup is due at 2024-02-20 16:39:40+08:00 (in 39.995614 seconds)
2024-02-20 16:39:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:39:50 CST)" executed successfully
2024-02-20 16:39:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-20 16:40:00 CST)" executed successfully
2024-02-20 16:39:19 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:39:40 CST)" executed successfully
2024-02-20 16:39:40 - DEBUG - Looking for jobs to run
2024-02-20 16:39:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:39:40 CST)" (scheduled at 2024-02-20 16:39:40+08:00)
2024-02-20 16:39:40 - DEBUG - Next wakeup is due at 2024-02-20 16:39:50+08:00 (in 9.996017 seconds)
2024-02-20 16:39:49 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:40:00 CST)" executed successfully
2024-02-20 16:39:50 - DEBUG - Looking for jobs to run
2024-02-20 16:39:50 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:39:50 CST)" (scheduled at 2024-02-20 16:39:50+08:00)
2024-02-20 16:39:50 - DEBUG - Next wakeup is due at 2024-02-20 16:40:00+08:00 (in 9.998374 seconds)
2024-02-20 16:39:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:40:00 CST)" executed successfully
2024-02-20 16:40:00 - DEBUG - Looking for jobs to run
2024-02-20 16:40:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/10'], next run at: 2024-02-20 16:40:00 CST)" (scheduled at 2024-02-20 16:40:00+08:00)
2024-02-20 16:40:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/5'], next run at: 2024-02-20 16:40:00 CST)" (scheduled at 2024-02-20 16:40:00+08:00)
2024-02-20 16:40:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:40:00 CST)" (scheduled at 2024-02-20 16:40:00+08:00)
2024-02-20 16:40:00 - DEBUG - Next wakeup is due at 2024-02-20 16:40:40+08:00 (in 39.997967 seconds)
2024-02-20 16:40:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:40:40 CST)" (scheduled at 2024-02-20 16:40:00+08:00)
2024-02-20 16:40:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-20 16:41:00 CST)" (scheduled at 2024-02-20 16:40:00+08:00)
2024-02-20 16:40:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:40:50 CST)" executed successfully
2024-02-20 16:40:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-20 16:41:00 CST)" executed successfully
2024-02-20 16:40:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/10'], next run at: 2024-02-20 16:50:00 CST)" executed successfully
2024-02-20 16:40:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/5'], next run at: 2024-02-20 16:45:00 CST)" executed successfully
2024-02-20 16:40:10 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:40:40 CST)" executed successfully
2024-02-20 16:40:40 - DEBUG - Looking for jobs to run
2024-02-20 16:40:40 - DEBUG - Next wakeup is due at 2024-02-20 16:40:50+08:00 (in 9.992855 seconds)
2024-02-20 16:40:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:41:00 CST)" (scheduled at 2024-02-20 16:40:40+08:00)
2024-02-20 16:40:49 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:41:00 CST)" executed successfully
2024-02-20 16:40:50 - DEBUG - Looking for jobs to run
2024-02-20 16:40:50 - DEBUG - Next wakeup is due at 2024-02-20 16:41:00+08:00 (in 9.998182 seconds)
2024-02-20 16:40:50 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:41:00 CST)" (scheduled at 2024-02-20 16:40:50+08:00)
2024-02-20 16:40:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:41:00 CST)" executed successfully
2024-02-20 16:41:00 - DEBUG - Looking for jobs to run
2024-02-20 16:41:00 - DEBUG - Next wakeup is due at 2024-02-20 16:41:40+08:00 (in 39.998935 seconds)
2024-02-20 16:41:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:41:50 CST)" (scheduled at 2024-02-20 16:41:00+08:00)
2024-02-20 16:41:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:41:40 CST)" (scheduled at 2024-02-20 16:41:00+08:00)
2024-02-20 16:41:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-20 16:42:00 CST)" (scheduled at 2024-02-20 16:41:00+08:00)
2024-02-20 16:41:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-20 16:42:00 CST)" executed successfully
2024-02-20 16:41:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-20 16:41:50 CST)" executed successfully
2024-02-20 16:41:10 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-20 16:41:40 CST)" executed successfully
2024-02-20 16:41:40 - DEBUG - Looking for jobs to run
2024-02-20 16:41:40 - DEBUG - Next wakeup is due at 2024-02-20 16:41:50+08:00 (in 9.998590 seconds)
2024-02-20 16:41:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='*/40'], next run at: 2024-02-20 16:42:00 CST)" (scheduled at 2024-02-20 16:41:40+08:00)
2024-02-20 16:41:50 - DEBUG - Looking for jobs to run

...

2024-02-21 07:17:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:18:00 CST)" (scheduled at 2024-02-21 07:17:00+08:00)
2024-02-21 07:17:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:18:00 CST)" executed successfully
2024-02-21 07:17:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:17:50 CST)" executed successfully
2024-02-21 07:17:10 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:17:40 CST)" executed successfully
2024-02-21 07:17:40 - DEBUG - Looking for jobs to run
2024-02-21 07:17:40 - DEBUG - Next wakeup is due at 2024-02-21 07:17:50+08:00 (in 9.998795 seconds)
2024-02-21 07:17:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:18:00 CST)" (scheduled at 2024-02-21 07:17:40+08:00)
2024-02-21 07:17:49 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:18:00 CST)" executed successfully
2024-02-21 07:17:50 - DEBUG - Looking for jobs to run
2024-02-21 07:17:50 - DEBUG - Next wakeup is due at 2024-02-21 07:18:00+08:00 (in 9.999012 seconds)
2024-02-21 07:17:50 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:18:00 CST)" (scheduled at 2024-02-21 07:17:50+08:00)
2024-02-21 07:17:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:18:00 CST)" executed successfully
2024-02-21 07:18:00 - DEBUG - Looking for jobs to run
2024-02-21 07:18:00 - DEBUG - Next wakeup is due at 2024-02-21 07:18:40+08:00 (in 39.998826 seconds)
2024-02-21 07:18:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:18:50 CST)" (scheduled at 2024-02-21 07:18:00+08:00)
2024-02-21 07:18:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:18:40 CST)" (scheduled at 2024-02-21 07:18:00+08:00)
2024-02-21 07:18:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:19:00 CST)" (scheduled at 2024-02-21 07:18:00+08:00)
2024-02-21 07:18:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:19:00 CST)" executed successfully
2024-02-21 07:18:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:18:50 CST)" executed successfully
2024-02-21 07:18:10 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:18:40 CST)" executed successfully
2024-02-21 07:18:40 - DEBUG - Looking for jobs to run
2024-02-21 07:18:40 - DEBUG - Next wakeup is due at 2024-02-21 07:18:50+08:00 (in 9.998379 seconds)
2024-02-21 07:18:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:19:00 CST)" (scheduled at 2024-02-21 07:18:40+08:00)
2024-02-21 07:18:49 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:19:00 CST)" executed successfully
2024-02-21 07:18:50 - DEBUG - Looking for jobs to run
2024-02-21 07:18:50 - DEBUG - Next wakeup is due at 2024-02-21 07:19:00+08:00 (in 9.998948 seconds)
2024-02-21 07:18:50 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:19:00 CST)" (scheduled at 2024-02-21 07:18:50+08:00)
2024-02-21 07:18:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:19:00 CST)" executed successfully
2024-02-21 07:19:00 - DEBUG - Looking for jobs to run
2024-02-21 07:19:00 - DEBUG - Next wakeup is due at 2024-02-21 07:19:40+08:00 (in 39.999175 seconds)
2024-02-21 07:19:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:19:50 CST)" (scheduled at 2024-02-21 07:19:00+08:00)
2024-02-21 07:19:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:19:40 CST)" (scheduled at 2024-02-21 07:19:00+08:00)
2024-02-21 07:19:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:20:00 CST)" (scheduled at 2024-02-21 07:19:00+08:00)
2024-02-21 07:19:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:19:50 CST)" executed successfully
2024-02-21 07:19:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:20:00 CST)" executed successfully
2024-02-21 07:19:09 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:19:40 CST)" executed successfully
2024-02-21 07:19:40 - DEBUG - Looking for jobs to run
2024-02-21 07:19:40 - DEBUG - Next wakeup is due at 2024-02-21 07:19:50+08:00 (in 9.998658 seconds)
2024-02-21 07:19:40 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:20:00 CST)" (scheduled at 2024-02-21 07:19:40+08:00)
2024-02-21 07:19:49 - INFO - Job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:20:00 CST)" executed successfully
2024-02-21 07:19:50 - DEBUG - Looking for jobs to run
2024-02-21 07:19:50 - DEBUG - Next wakeup is due at 2024-02-21 07:20:00+08:00 (in 9.999007 seconds)
2024-02-21 07:19:50 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:20:00 CST)" (scheduled at 2024-02-21 07:19:50+08:00)
2024-02-21 07:19:50 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:20:00 CST)" executed successfully
2024-02-21 07:20:00 - DEBUG - Looking for jobs to run
2024-02-21 07:20:00 - DEBUG - Next wakeup is due at 2024-02-21 07:20:40+08:00 (in 39.998982 seconds)
2024-02-21 07:20:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/10'], next run at: 2024-02-21 07:30:00 CST)" (scheduled at 2024-02-21 07:20:00+08:00)
2024-02-21 07:20:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/5'], next run at: 2024-02-21 07:25:00 CST)" (scheduled at 2024-02-21 07:20:00+08:00)
2024-02-21 07:20:00 - INFO - Running job "JobService.exec_compile (trigger: cron[day='', hour='7', minute='20', second='0'], next run at: 2024-02-22 07:20:00 CST)" (scheduled at 2024-02-21 07:20:00+08:00)
2024-02-21 07:20:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:20:50 CST)" (scheduled at 2024-02-21 07:20:00+08:00)
2024-02-21 07:20:00 - INFO - Running job "JobService.exec_compile (trigger: cron[second='/40'], next run at: 2024-02-21 07:20:40 CST)" (scheduled at 2024-02-21 07:20:00+08:00)
2024-02-21 07:20:00 - INFO - Running job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:21:00 CST)" (scheduled at 2024-02-21 07:20:00+08:00)
2024-02-21 07:20:00 - INFO - Job "JobService.exec_compile (trigger: cron[second='/50'], next run at: 2024-02-21 07:20:50 CST)" executed successfully
2024-02-21 07:20:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='/1'], next run at: 2024-02-21 07:21:00 CST)" executed successfully
2024-02-21 07:20:00 - INFO - Job "JobService.exec_compile (trigger: cron[minute='*/10'], next run at: 2024-02-21 07:30:00 CST)" executed successfully

How can we reproduce the bug?

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger
from apscheduler.events import *
from apscheduler.schedulers.base import *

scheduler = BackgroundScheduler(job_defaults={'coalesce': True, 'misfire_grace_time': None, 'max_instances': 5})


class ScheduleService:
    __scheduler = scheduler
    result = {}

    @classmethod
    def invoke(cls):
        if not cls.__scheduler:
            cls.__scheduler = scheduler
        return cls.__scheduler

    @classmethod
    def scheduler_stat(cls):
        if cls.__scheduler:
            return cls.__scheduler.state
        return -1

    @classmethod
    def run(cls):
        if not cls.__scheduler:
            cls.invoke()
        if cls.__scheduler.state != STATE_RUNNING:
            cls.__scheduler.start()
            cls.__scheduler.add_listener(cls.run_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)

    @classmethod
    def run_listener(cls, event):
        dtime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        if event.exception:
            cls.result[event.job_id] = {"datetime": dtime, "flag": 1, "remark": "异常"}
        else:
            cls.result[event.job_id] = {"datetime": dtime, "flag": 0, "remark": "正常"}

    @classmethod
    def cron_to_trigger(cls, **kwargs):
        if kwargs:
            trigger = CronTrigger(**kwargs)
            return trigger

    @classmethod
    def add_job(cls, func, args, trigger, job_id):
        if not cls.__scheduler:
            cls.invoke()
        cls.__scheduler.add_job(func=func, args=args, trigger=trigger, id=job_id)

    @classmethod
    def modify_job(cls, job_id, args, trigger):
        if job_id:
            cls.__scheduler.get_job(job_id=job_id).modify(args=args, trigger=trigger)

    @classmethod
    def remove_job(cls, job_id):
        if cls.__scheduler:
            cls.__scheduler.remove_job(job_id=job_id)

    @classmethod
    def remove_all_jobs(cls):
        if cls.__scheduler:
            cls.__scheduler.remove_all_jobs()

    @classmethod
    def shutdown(cls):
        if cls.__scheduler:
            cls.__scheduler.shutdown(wait=False)

    @classmethod
    def get_jobs(cls):
        if cls.__scheduler:
            return cls.__scheduler.get_jobs()

    @classmethod
    def has_job(cls, job_id):
        jobs = cls.get_jobs()
        if jobs:
            ids = [x.id for x in jobs]
            if job_id in ids:
                return True
        return False

    @classmethod
    def print_jobs(cls):
        if cls.__scheduler:
            cls.__scheduler.print_jobs()

    if __name__ == "__main__":
        ...
@1476339526 1476339526 added the bug label Feb 21, 2024
@agronholm
Copy link
Owner

The provided script just exits immediately when I run it.

@agronholm
Copy link
Owner

Also, is all that complexity really necessary to reproduce the issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants