获取BackgroundScheduler作业的活动实例数。

问题描述 投票:0回答:1

我有一个简单的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.x flask apscheduler
1个回答
2
投票

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

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

    return instances > 0

如果有人有其他的想法,不要用这个。

© www.soinside.com 2019 - 2024. All rights reserved.