我每秒使用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.如何处理?
这意味着任务花费的时间超过一秒,并且默认情况下给定作业只允许一个并发执行。在不知道任务是什么的情况下,我无法告诉你如何处理这个问题。
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})
如果您希望同时运行同一作业的实例并避免出现警告,则可以在调度程序的
max_instances
方法中包含 add_job()
参数。默认值为一。
您可以增加允许运行的实例的最大数量。您可以在使用“max_instances”参数添加作业时执行此操作:
scheduler.add_job(runsync, 'interval', seconds=1, max_instances=2)