2015-10-19 59 views
4

使用APScheduler版本3.0.3。我的应用程序中的服务在内部使用APScheduler来安排&运行作业。此外,我确实在APScheduler周围创建了一个包装类(仅仅是一个外观,有助于单元测试)。对于单元测试这些服务,我可以嘲笑这个包装类。但是我有一种情况,我非常希望APScheduler能够运行这个工作(在测试期间)。有什么办法可以强制执行这项工作?我们可以强制在APScheduler作业存储中运行作业吗?

回答

4

没有默认触发立即启动工作,为实现这一 你可以得到当前的时间和DateTrigger设置工作是这样的:

my_job.modify_job(trigger=DateTrigger(run_date=datetime.datetime.now())) 

这样,您将“强制”作业运行,但你必须确保在调度再次插入工作,另一种选择是刚刚创建一个新的工作与add_job功能

sched.add_job(func=your_function(), 
       trigger=DateTrigger(run_date=datetime.datetime.now())) 

这样您不必运行相同的功能做任何额外的步骤。

0

另一种方法:您可以在单独的函数中编写作业的逻辑。因此,您可以在预定的工作以及其他地方调用此函数。我想这是一个更明确的方式来做你想做的事情。

相关问题