python Schedule不运行所有作业

时间:2020-03-06 00:45:00

标签: python multithreading python-multithreading schedule

我正在使用python schedule模块在​​heroku(Hobby Tier)实例上安排一堆(40+)日常重复工作。我将脚本作为入口点运行(在每次计算机重新启动时调用):

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 :(得分:0)

之所以会发生这种情况,是因为python schedule模块不会自动处理错误,因此,如果一个作业中断了调度程序中断,则以下所有作业将不会执行。

一种解决方法是使用一种实现来捕获类似SafeScheduler

这样的异常的实现