Python使用schedule模块运行定时任务到指定时长不生效问题
问题原因
你仅完成了调度任务的注册,没有启动schedule模块的任务轮询逻辑。schedule本身不会主动执行注册的任务,必须主动调用schedule.run_pending()方法检查并触发到期任务。
另外你原代码中from datetime import ... time导入的是datetime模块下的时间类,和用来做休眠的标准库time模块不是一个东西,需要单独导入标准库time避免命名冲突。
修正后可运行代码
import schedule import time from datetime import timedelta def job(): print('Hello World') # 注册任务规则:每5秒执行1次,累计运行20秒后自动移除该任务 schedule.every(5).seconds.until(timedelta(seconds=20)).do(job) # 启动轮询循环 while True: # 执行所有已到期的任务 schedule.run_pending() # 降低空转CPU占用 time.sleep(1) # 所有任务执行完毕后自动退出循环 if not schedule.jobs: break
运行效果说明
代码启动后会依次在第5、10、15秒输出Hello World,到达20秒的截止时间后任务会被自动移除,循环退出,程序结束。
内容的提问来源于stack exchange,提问作者Leo Optimo II
相关产品推荐
相关产品推荐

