首页 > 解决方案 > 获取 BackgroundScheduler 作业的活动实例数

问题描述

我有一个简单的 BackgroundScheduler 和一个简单的任务。BackgroundScheduler 被配置为只为该任务运行一个实例:

from apscheduler.schedulers.background import BackgroundScheduler

scheduler.add_job(run_task, 'interval', seconds=10)
scheduler.start()

当一个任务开始时,它需要超过 10 秒才能完成,我收到警告:

Execution of job "run_tasks (trigger: interval[0:00:10], next run at: 2020-06-17 18:25:32 BST)" skipped: maximum number of running instances reached (1)

这按预期工作。

我的问题是我找不到检查该任务的实例当前是否正在运行的方法。

文档中,有很多方法可以获取所有和单个计划任务,但我找不到检查任务当前是否正在运行的方法。理想情况下,我想要类似的东西:

def job_in_progress():
    job = scheduler.get_job(id=job_id)
    instances = job.get_instances()

    return instances > 0

有任何想法吗?

标签: python-3.xflaskapscheduler

解决方案


不是很好,因为您必须访问私有属性,但我唯一能找到的。

def job_in_progress():
    job = scheduler.get_job(id=job_id)
    instances = scheduler._instances[job_id]

    return instances > 0

如果其他人有其他想法,请不要使用它。


推荐阅读