python расписание не запускает все задания - PullRequest
0 голосов
/ 06 марта 2020

Я использую модуль python schedule для составления расписания (более 40) ежедневных повторяющихся заданий в экземпляре heroku (Hobby Tier). Я запускаю сценарий в качестве точки входа (вызывается при каждой перезагрузке компьютера):

if __name__ == "__main__":
     schedule.every().day.at(session_time).do(_run_leetcode_session, bot, chat_id, team_name=team_name)

Из ~ 40 заданий, которые я запланировал, похоже, что некоторые из них не выполняются. Для. убедитесь, что я запускаю следующий сценарий отладки:

for job in schedule.jobs:
         logging.info(job)

И я получаю следующий журнал

2020-03-05 23:06:31,606 - root - INFO - Every 1 day at 12:00:00 do _run_leetcode_session(<telegram.bot.Bot object at 0x7f9576039b50>, '-375976592', team_name='?Leetcode Team 100') (last run: 2020-03-05 12:00:01, next run: 2020-03-06 12:00:00)
2020-03-05 23:06:31,606 - root - INFO - Every 1 day at 15:30:00 do _run_leetcode_session(<telegram.bot.Bot object at 0x7f9576039b50>, '-281586101', team_name='?Leetcode Practice 201') (last run: [never], next run: 2020-03-05 15:30:00)

Первая строка в порядке, но журнал демонстрирует непредвиденное поведение во второй строка: в 2020-03-05 23:06:31 Мне говорят, что (last run: [never], next run: 2020-03-05 15:30:00), фактически задание не было выполнено в 2020-03-05 15:30:00, и теперь следующая дата выполнения уже в прошлом. Как это интерпретировать?

Это ошибка в библиотеке? Есть ли проблема в машине? Есть какие-то проблемы с настройкой потоков?

1 Ответ

0 голосов
/ 06 марта 2020

Это происходит потому, что python schedule модуль не обрабатывает ошибки автоматически, поэтому, если одно задание прерывается, разрывается планировщик и все следующие задания не будут выполняться.

A Временное решение использует реализацию, которая перехватывает исключения вроде этого SafeScheduler

...