Планировщик блокировки (apscheduler) не может получить список заданий перед запуском

Я не могу получить список вакансий до запуска blockingscheduler, у меня уже есть вакансия с идентификатором

background_event_publisher

Теперь, когда я пытаюсь добавить -

jobstores = {
        'default': SQLAlchemyJobStore(url=os.environ.get("SQLALCHEMY_DATABASE_URI", None))
    }
scheduler = BlockingScheduler(
        daemon=True, jobstores=jobstores, timezone=pytz.utc)
scheduler.get_jobs()

Дает

[]

затем

scheduler.add_job(fun, 'cron', hour='09', minute='30',
                                   id='background_event_publisher' , misfire_grace_time=3600)
scheduler.start()

Выдает ошибку

apscheduler.jobstores.base.ConflictingIdError: 'Job identifier (background_event_publisher) conflicts with an existing job

    

Не могу понять, почему ничего не получается в get_jobs(), пока он все еще существует.


person Ravinder Baid    schedule 05.02.2021    source источник


Ответы (1)


Прежде чем планировщик запустится, он видит только предварительно добавленные к нему задания. Он не может получить доступ к хранилищу заданий, поскольку хранилище заданий инициализируется только во время инициализации планировщика. Если вам нужно просто получить такую ​​информацию без фактического запуска запланированных заданий, вы должны запустить планировщик в состоянии паузы (scheduler.start(paused=True)).

person Alex Grönholm    schedule 06.02.2021
comment
Затем я думаю сначала проверить через БД, присутствует ли задание, а затем добавить задание, если оно отсутствует. - person Ravinder Baid; 07.02.2021
comment
Должны ли мы сообщать об этой проблеме в apscheduler? - person Ravinder Baid; 07.02.2021
comment
Почему? Он работает, как задумано. - person Alex Grönholm; 08.02.2021