使用Python Schedule库调度任务:如何让任务启动时立即执行?
解决Python调度任务启动时立即执行的问题
当然可以,给你两个简单实用的解决办法:
方法一:手动调用任务函数
最直接的方式,在启动调度循环前手动调用一次do_job()函数,启动时就会立即执行一次任务,之后再按调度间隔自动运行。
修改后的代码:
import schedule from datetime import datetime def do_job(): print("Inside do_job at ", datetime.now().strftime("%H:%M:%S")) schedule.every(1).minutes.do(do_job) print("Starting at ",datetime.now().strftime("%H:%M:%S")) # 启动时立即执行一次任务 do_job() while True: schedule.run_pending()
执行输出示例:
Starting at 15:15:52
Inside do_job at 15:15:52
Inside do_job at 15:16:52
Inside do_job at 15:17:52
方法二:使用schedule的run_all()方法
如果有多个调度任务,用schedule.run_all()可以一次性执行所有已注册的任务,适合多任务场景。
修改后的代码:
import schedule from datetime import datetime def do_job(): print("Inside do_job at ", datetime.now().strftime("%H:%M:%S")) schedule.every(1).minutes.do(do_job) print("Starting at ",datetime.now().strftime("%H:%M:%S")) # 执行所有已调度的任务一次 schedule.run_all() while True: schedule.run_pending()
这个方法的执行效果和方法一完全一致。
如果要改成每两小时执行的任务,只需要把调度语句改成schedule.every(2).hours.do(do_job)即可,两种方法都适用。
内容的提问来源于stack exchange,提问作者CrazyCoder
相关产品推荐
相关产品推荐

