如何强制apscheduler将作业添加到作业存储?

时间:2015-03-05 11:38:38

标签: python cron apscheduler

我正在使用脚本使用apscheduler向调度程序添加作业。不幸的是,在使用脚本时没有正确安排作业,因为我没有启动调度程序。

scheduler = self.getscheduler() # initializes and returns scheduler
scheduler.add_job(trigger=trigger, func = function, jobstore = 'mongo') #sample code. Note that I did not call scheduler.start()

我看到了一条消息:apscheduler.scheduler - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts

该脚本应该向调度程序添加作业(不是在该特定实例上运行调度程序),并且在添加到数据库的作业事件中还有一些其他信息要添加。是否可以添加作业并强制调度程序将其添加到作业库而不实际运行调度程序?

我知道,可以在添加每个作业后启动和关闭调度程序,以使调度程序将作业信息保存到作业库中。这真是一个好方法吗?

编辑:我的初衷是隔离我的软件的初始化过程。我只想将一些作业添加到尚未启动的调度程序中。真正的问题是我已经允许用户启动和停止调度程序。我不能保证系统中有一个正在运行的调度程序实例。我通过启动调度程序并在添加作业后将其关闭来暂时解决问题。它有效。

1 个答案:

答案 0 :(得分:0)

您必须有一些方法通知调度程序已添加作业,以便它可以唤醒并调整延迟到下次唤醒。通过某种RPC机制做到这一点会更好。什么样的机制适合您的特定用例,我不知道。但RPyC和Execnet是很好的候选人。使用其中一个或其他东西来远程控制调度程序进程以添加所述作业,您就可以了。