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))
第一个问题是,打印出来的结果显示这段代码被执行了两次。其次,在其他应用中,我想引用这个调度器,但我完全不知道该怎么做。如果我再创建一个调度器实例,我觉得那会是一个独立的线程池,而不是这里创建的那个。
- 我怎么才能让apscheduler只运行一个实例?
- 我怎么才能在其他应用中引用这个实例?
1 个回答
4
这要看你是怎么搞到两个调度器实例的。你是在一个工作线程或进程里启动的apscheduler吗?如果你有多个这样的工作线程,那就会出现多个调度器实例。所以,你需要找到一种方法,防止调度器被启动多次。可以尝试在不同的进程中运行它,或者在启动调度器时加一些条件来限制。
你不能这样做。变量是每个进程独有的。你能做的最好的办法就是建立一种远程执行系统,可以使用某种ReST服务,或者像execnet或rpyc这样的远程控制系统。