python apscheduler - 已跳过:已达到运行实例的最大数量

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

我每秒使用Python apscheduler(版本3.0.1)执行一个函数

代码

scheduler = BackgroundScheduler()
scheduler.add_job(runsync, 'interval', seconds=1)
scheduler.start()

大部分时间都工作正常,但有时我会收到此警告:

WARNING:apscheduler.scheduler:Execution of job "runsync (trigger: interval[0:00:01], next run at: 2015-12-01 11:50:42 UTC)" skipped: maximum number of running instances reached (1)

1.这是执行该方法的正确方法吗?

2.这个警告是什么意思?它是否会影响函数内任务的执行?

3.如何处理?

python cron scheduler apscheduler
5个回答
38
投票

这意味着任务花费的时间超过一秒,并且默认情况下给定作业只允许一个并发执行。在不知道任务是什么的情况下,我无法告诉你如何处理这个问题。


24
投票

增加
max_instances

如果特定用例允许,只需增加

max_instances
,如下所示。

import apscheduler.schedulers.background

scheduler = apscheduler.schedulers.background.BackgroundScheduler({'apscheduler.job_defaults.max_instances': 2})

共有三种

apscheduler
配置样式。这些在文档中进行了描述。上面是字典/JSON样式,这里是参数样式:

import apscheduler.schedulers.background

scheduler = apscheduler.schedulers.background.BackgroundScheduler(job_defaults={'max_instances': 2})

12
投票

如果您希望同时运行同一作业的实例并避免出现警告,则可以在调度程序的

max_instances
方法中包含
add_job()
参数。默认值为一。


2
投票

我很确定我的任务所花费的时间不会超过间隔时间。我只是按照这个 answer 转而按照建议切换到

apscheduler==2.1.2
here


0
投票

您可以增加允许运行的实例的最大数量。您可以在使用“max_instances”参数添加作业时执行此操作:

scheduler.add_job(runsync, 'interval', seconds=1, max_instances=2)
© www.soinside.com 2019 - 2024. All rights reserved.