python-3.x - 获取 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
有任何想法吗?
解决方案
不是很好,因为您必须访问私有属性,但我唯一能找到的。
def job_in_progress():
job = scheduler.get_job(id=job_id)
instances = scheduler._instances[job_id]
return instances > 0
如果其他人有其他想法,请不要使用它。
推荐阅读
- r - 将正则表达式从 PRCE 更改为 ICU 以符合 stringr 使用
- python - 创建一个带有滚动和按钮的列表框。获取 AttributeError:“str”对象没有属性“tk”
- laravel - 在我的 laravel 项目中使用现有的 graphql api
- php - 制作一个可以恢复损坏的序列化字符串的脚本,该字符串在 PHP 中具有序列化字符串
- r - 当legend.position =“top”时,如何保持两行图例中心对齐并定位在图的中心
- python - 如何在 Pandas 中为时间序列绘图设置和转置列?
- java - BufferedOutputStream java 出错:构造函数 BufferedOutputStream(FileOutputStream) 未定义
- android-studio - 在 Android Studio 中调整 AVD 模拟器窗口大小的快捷方式
- javascript - 从不同的表单组更新表单组表单控件值,但我不想永久更改这些值(Angular)
- javascript - Google Tag Manager Custom JS - 出错时返回值