APScheduler. Каковы оптимальные методы выключения планировщиков с любой не памятью?
Мне нужно запустить планировщик, распределенный по многим машинам и имеющий одну единственную точку для хранения заданий. Я использую Redis для этой цели, и мой код выглядит следующим образом:
jobstores = {'default': {'type': 'redis'}}
scheduler = BlockingScheduler(jobstores=jobstores)
scheduler.add_job(...)
Когда я помещаю работу в планировщик и вызываю .start()
это добавить рабочие места в Redis. Но когда я запускаю другой экземпляр моего планировщика или когда я останавливаю текущий и снова запускаю его, планировщик добавляет больше заданий в redis (не выполняет очистку).
Поэтому у меня есть этот вопрос. Как лучше всего делать такие вещи?
Заранее спасибо.
1 ответ
Вы должны использовать replace_existing=True
вариант при добавлении новой работы для этого вида использования.
Из документации:
Если вы планируете задания в постоянном хранилище заданий во время инициализации приложения, вы ДОЛЖНЫ определить явный идентификатор задания и использовать его.
replace_existing=True
или вы будете получать новую копию задания каждый раз, когда ваше приложение перезапускается!