我有一个使用APScheduler中的cron
调度程序调度的作业,可以为我的Flask应用程序运行某种功能。
我还希望能够手动运行此功能,而不会中断我同样设置的时间表。
例如,假设该任务设置为每天运行一次,那么我也想在用户执行特定操作时手动运行它。
重要的是,不能同时运行作业的两个实例(这就是为什么我不能简单地调用函数本身)的原因-因此,我正在尝试提出一种使用APScheduler的解决方案,以防止出现在计划的运行繁忙时执行手动触发的情况。
答案 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,否则它将不会执行。