由于实例数达到最大值,Apscheduler正在跳过作业执行

2024-04-19 11:50:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用APScheduler运行带有IntervalTrigger的周期性作业,我故意将运行实例的最大数量设置为一个,因为我不希望作业重叠。在

问题是,调度程序在一段时间后开始报告已达到作业的最大运行实例数,即使之前通知该作业已成功完成,我在日志中发现了这一点:

2015-10-28 22:17:42,137 INFO     Running job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:18:42 VET)" (scheduled at 2015-10-28 22:17:42-04:30)
2015-10-28 22:17:44,157 INFO     Job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:18:42 VET)" executed successfully

2015-10-28 22:18:42,335 WARNING  Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:18:42 VET)" skipped: maximum number of running instances reached (1)

2015-10-28 22:19:42,171 WARNING  Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:19:42 VET)" skipped: maximum number of running instances reached (1)

2015-10-28 22:20:42,181 WARNING  Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:20:42 VET)" skipped: maximum number of running instances reached (1)

2015-10-28 22:21:42,175 WARNING  Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:21:42 VET)" skipped: maximum number of running instances reached (1)

2015-10-28 22:22:42,205 WARNING  Execution of job "ping (trigger: interval[0:01:00], next run at: 2015-10-28 22:22:42 VET)" skipped: maximum number of running instances reached (1)

正如您在日志中看到的,ping作业被报告成功执行,但在下一次执行之后不久,就会从该点跳过。在

这是我用来安排作业的代码:

^{pr2}$

正在运行的函数本身启动一些线程,在多个网络节点上执行ping命令,并将结果保存到一个文件中

threads = []
for link in links:
    thread = Thread(target = ping_test, args = (link,count,interval,timeout))
    threads.append(thread)
    thread.start()
for thread in threads:
    thread.join()

请注意,超时被设置为一个比触发器间隔小得多的数字,因此当下次运行触发时,作业不可能仍在执行。在

任何关于这个问题的见解都将受到高度赞赏。在


Tags: ofrunnumber作业jobpingatnext