Apscheduler在多台服务器上运行,Job应该仅在一个实例中启动一个

时间:2019-01-13 04:04:15

标签: apscheduler

我下面的调度程序工作是用Django框架编写的。我正在使用作业存储将所有作业和执行详细信息存储在SQL DB中。以下是我的调度程序代码。我的Django应用程序在5个实例/服务器上运行。 Scheduler Job正在所有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

0 个答案:

没有答案