获取 BackgroundScheduler 作业的活动实例数

Get number of active instances for BackgroundScheduler jobs

我有一个简单的 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)

这按预期工作。

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

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

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

    return instances > 0

有什么想法吗?

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

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

    return instances > 0

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