我在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))
第一个问题是打印显示此代码执行两次。其次,在其他应用程序中,我想参考调度程序,但不知道如何做到这一点。如果我得到调度程序的另一个实例,我相信它是一个单独的线程池而不是在这里创建的那个。
答案 0 :(得分:1)
这取决于您最初如何使用两个调度程序实例。你是在工作线程/进程中启动apscheduler吗?如果您有多个这样的工作者,那么您将获得调度程序的多个实例。因此,您必须找到一种方法来阻止调度程序多次启动,方法是在可能的情况下在不同的进程中运行它,或者为调度程序启动添加一些条件。
你不是。变量是每个进程的本地变量。您可以做的最好的事情是构建某种远程执行系统,使用某种ReST服务或某些远程控制系统,如execnet或rpyc。