APScheduler.Каковы оптимальные методы выключения планировщиков с любой не памятью? - PullRequest
0 голосов
/ 19 декабря 2018

Мне нужно запустить планировщик, распределенный по многим машинам и имеющий одну единственную точку для хранения заданий.Я использую Redis для этой цели, и мой код выглядит следующим образом:

jobstores = {'default': {'type': 'redis'}}
scheduler = BlockingScheduler(jobstores=jobstores)
scheduler.add_job(...)

Когда я помещаю задания в планировщик и вызываю .start(), он добавляет задания в Redis.Но когда я запускаю другой экземпляр моего планировщика или когда я останавливаю текущий и снова запускаю его, планировщик добавляет больше заданий в redis (не выполняет очистку).

Поэтому у меня возникает этот вопрос.Как лучше всего делать такие вещи?

Заранее спасибо.

1 Ответ

0 голосов
/ 21 декабря 2018

Вы должны использовать опцию replace_existing=True при добавлении новой работы для этого вида использования.

Из документации :

Есливы планируете задания в постоянном хранилище заданий во время инициализации приложения, вы ДОЛЖНЫ определяете явный идентификатор для задания и используете replace_existing=True, или вы будете получать новую копию задания при каждом перезапуске приложения!

...