在 APScheduler 中超出计划的手动作业执行

ADS*_*ADS 2 python flask apscheduler

我有一个使用cronAPScheduler 中的调度程序安排的作业,为我的 Flask 应用程序运行某种功能。

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

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

重要的是作业的两个实例不能同时运行(这就是为什么我不简单地调用函数本身) - 所以我试图想出一个使用 APScheduler 的解决方案来防止出现以下情况:当计划运行繁忙时执行手动触发。

ADS*_*ADS 7

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

拉尔斯·布隆伯格的回答为我解决了这个问题。我用了这一行:

scheduler_object.get_job(job_id ="my_job_id").modify(next_run_time=datetime.datetime.now())
Run Code Online (Sandbox Code Playgroud)

这确保特定作业将立即运行,并保持先前​​的计划。如果计划的作业已经在运行,那么现在不会触发作业(对我来说是期望的行为)...除非您设置max_instances为大于 1。同样,如果您手动执行作业并且它在计划的运行时正在运行触发后,除非max_instances大于1,否则也不会执行。