2015-12-01 2 views
3

Я выполняющей функцию каждый второй с помощью Python apscheduler (версия 3.0.1)питон apscheduler - пропущено: максимальное количество запущенных экземпляров достигло

код:

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. Как справиться с этим?

ответ

4

Это означает, что задача занимает больше одной секунды, и по умолчанию для данного задания разрешено только одно одновременное выполнение. Я не могу сказать вам, как с этим справиться, не зная, в чем дело.

+0

Привет, Alex, Проверка задачи для папки внутри местоположения FTP, и если папка найдена, она начинает получать данные из тех папок, которые могут занимать до 24 часов. – ashishashen

+2

Поскольку этот процесс занимает больше секунды, вы будете видеть эти предупреждения много. Однако вам не нужно ничего делать. –

1

Если вы хотите одновременно запускать экземпляры одного и того же задания и избегать предупреждения, вы можете включить аргумент max_instances в методе планировщика. Значение по умолчанию - одно.

0

Если конкретный вариант использования позволяет это, просто увеличьте max_instances, как показано ниже.

import apscheduler.schedulers.blocking 

scheduler = apscheduler.schedulers.blocking.BackgroundScheduler('apscheduler.job_defaults.max_instances': '2') 

Существует три стиля настройки apscheduler. Они описаны в документе documentation.

Смежные вопросы