在APScheduler中按计划执行手动作业

时间:2018-10-15 15:51:31

标签: python flask apscheduler

我有一个使用APScheduler中的cron调度程序调度的作业,可以为我的Flask应用程序运行某种功能。

我还希望能够手动运行此功能,而不会中断我同样设置的时间表。

例如,假设该任务设置为每天运行一次,那么我也想在用户执行特定操作时手动运行它。

重要的是,不能同时运行作业的两个实例(这就是为什么我不能简单地调用函数本身)的原因-因此,我正在尝试提出一种使用APScheduler的解决方案,以防止出现在计划的运行繁忙时执行手动触发的情况。

1 个答案:

答案 0 :(得分:1)

这实际上是该问题的重复:APScheduler how to trigger job now

Lamber Blumberg的答案就是为我解决的答案。我用了这一行:

scheduler_object.get_job(job_id ="my_job_id").modify(next_run_time=datetime.datetime.now())

这确保特定作业将立即运行,并保持先前​​的计划。如果计划的作业已经在运行,则不会立即触发该作业(对我而言是所希望的行为)...除非您将max_instances设置为大于1。类似地,如果您手动执行该作业并且正在运行触发计划运行时,除非max_instances大于1,否则它将不会执行。