获取 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
如果其他人有其他想法,请不要使用它。
我有一个简单的 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
如果其他人有其他想法,请不要使用它。