如何用Python schedule库实现定时启动、间隔运行并按时终止任务
现有代码的问题
- 缺少
time库导入,运行时会触发NameError - 每日6点添加的每30分钟执行的
print2任务没有终止逻辑,会持续运行到进程退出 - 第二天6点会重复添加新的
print2定时任务,导致重复执行 - 示例中10点的任务创建后立即取消,属于无效代码
修复后可实现需求的代码
import schedule import time # 存储30分钟间隔执行的任务对象,方便后续取消 interval_job = None def print2(): print("间隔30分钟执行计算") def add_interval_job(): global interval_job # 先判断是否已有未取消的间隔任务,避免重复添加 if interval_job is None: interval_job = schedule.every(30).minutes.do(print2) # 不需要首次立即执行的话可以删掉下一行 print2() def cancel_interval_job(): global interval_job if interval_job is not None: schedule.cancel_job(interval_job) interval_job = None # 每日6点添加30分钟间隔任务 schedule.every().day.at('06:00').do(add_interval_job) # 每日22点取消30分钟间隔任务 schedule.every().day.at('22:00').do(cancel_interval_job) if __name__ == "__main__": while True: schedule.run_pending() time.sleep(1)
逻辑说明
- 用全局变量
interval_job存储间隔任务的实例,保证每次取消的是对应任务,也避免重复添加 - 每日6点触发
add_interval_job函数,添加每30分钟执行一次的print2任务,可选择是否立即执行第一次 - 每日22点触发
cancel_interval_job函数,取消间隔任务,当天不再执行 - 整个流程次日会自动重复,不需要额外处理
- 测试时可将
30).minutes改为对应秒数、将定时的06:00/22:00改为临近时间,快速验证效果
内容的提问来源于stack exchange,提问作者user14213623
相关产品推荐
相关产品推荐

