0

我正在使用脚本将作业添加到使用 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

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

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

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

4

1 回答 1

0

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

于 2015-03-06T11:28:02.157 回答