Интервал задач апшедулера не запущен
Я хотел бы, чтобы моя главная задача стреляла в 6 утра каждый день. но для целей тестирования я установил интервал в 5 секунд. Проблема в том, что он никогда не срабатывает. У меня есть точка останова в методе maintask, которая никогда не достигается и ничего не выводится на консоль. Я предполагаю, что это не работает.
ETA: мой код попадает в scheduler.start(), где останавливается, потому что он блокируется. это должно начать мою maintask через 5 секунд, но это никогда не делает.
Версия Python 2.7. Версия Apscheduler 3.0.
Я запустил его на Windows и Debian тот же результат.
Вот мой код
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
def maintask():
print("blah")
def main():
scheduler = BlockingScheduler()
print("Scheduling Tasks")
start_time = (datetime.datetime.now()).replace(hour=6, minute=0, second=0, microsecond=0)
scheduler.scheduled_job(maintask, 'interval', id="MainTaskid", name="mainTask", start_date=start_time, seconds=5, misfire_grace_time=60)
print("Tasks Scheduled")
print("Running Tasks")
scheduler.start()
print("Good Bye")
return 0
if __name__ == "__main__":
main()
1 ответ
Проблема в том, что вы используете scheduled_job
вместо add_job
,
Как объясняет руководство пользователя, scheduled_job
в основном предназначен для использования в качестве декоратора как "удобство для объявления заданий, которые не изменяются во время выполнения приложения", тогда как последний является "наиболее распространенным способом" добавления заданий.
В данном конкретном случае я считаю, что проблема в том, что add_job
заставляет планировщик проснуться, и scheduled_job
нет - что, по вашему мнению, не имеет значения, за исключением того факта, что вы полагаетесь на это пробуждение, чтобы принудительно запустить проверку пропуска зажигания при запуске, а не до 6 утра завтра.
Во всяком случае, просто изменив его на add_job
решает проблему.