apscheduler - 多个实例

时间:2014-05-07 02:54:32

标签: python django apscheduler

我在django中运行apscheduler,它似乎工作......好吧。在我的项目 init .py中,我初始化了调度程序:

scheduler = Scheduler(daemon=True)

print("\n\n\n\n\n\n\n\nstarting scheduler")

scheduler.configure({'apscheduler.jobstores.file.class': settings.APSCHEDULER['jobstores.file.class']})
scheduler.start()

atexit.register(lambda: scheduler.shutdown(wait=False))

第一个问题是打印显示此代码执行两次。其次,在其他应用程序中,我想参考调度程序,但不知道如何做到这一点。如果我得到调度程序的另一个实例,我相信它是一个单独的线程池而不是在这里创建的那个。

  1. 如何让一个且只有一个apscheduler实例运行?
  2. 如何在其他应用中引用该实例?

1 个答案:

答案 0 :(得分:1)

  1. 这取决于您最初如何使用两个调度程序实例。你是在工作线程/进程中启动apscheduler吗?如果您有多个这样的工作者,那么您将获得调度程序的多个实例。因此,您必须找到一种方法来阻止调度程序多次启动,方法是在可能的情况下在不同的进程中运行它,或者为调度程序启动添加一些条件。

  2. 你不是。变量是每个进程的本地变量。您可以做的最好的事情是构建某种远程执行系统,使用某种ReST服务或某些远程控制系统,如execnet或rpyc。