Apscheduler работает на нескольких серверах, Job должен запускаться только один в одном экземпляре - PullRequest
0 голосов
/ 13 января 2019

У меня есть ниже работа планировщика, написанная в рамках Django. Я использую хранилище заданий для хранения всех заданий и подробностей выполнения в базе данных SQL. Ниже мой код планировщика. У меня есть приложение Django, работающее на 5 экземплярах / серверах. Планировщик Задание запускается и выполняется во всех 5 экземплярах / серверах. Есть ли способ заставить задание запускаться только в одном экземпляре и пропустить задание для выполнения в других 4 экземплярах.

Примечание: у меня не может быть разного кода на каждом экземпляре / сервере (хотя у меня был планировщик только на одном сервере, но это не было возможно в моем случае). Может ли кто-нибудь помочь с этим?

scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
scheduler_testing = scheduler.add_job(scheduler_testing,
                                              'cron',
                                               id='scheduler_testing',
                                              replace_existing=True,
                                              coalesce=False,
                                              max_instances=1,
                                              **timings)

Детали выполнения задания:

id    status      run_time               duration   start_time        end_time         job_id
30    Executed    2019-01-10 15:00:00    53.94      1547154000.41    1547154054.35     1
31    Executed    2019-01-10 15:00:00    53.44      1547154000.41    1547154053.85     1
32    Executed    2019-01-10 15:00:00    52.86      1547154000.41    1547154053.27     1
33    Executed    2019-01-10 15:00:00    52.27      1547154000.41    1547154052.68     1
34    Executed    2019-01-10 15:00:00    51.86      1547154000.30    1547154052.16     1
...