使用schedule模块定时提醒喝水遇执行异常与TypeError报错求助
问题分析与解决
你的代码存在两个核心错误:
1. 错误传递函数引用
schedule.every().day.at("16:35").do(remindDrink()) 里的 remindDrink() 是直接执行函数,而非传递函数本身。do() 方法要求传入可调用的函数对象,而你传入的是函数执行后的返回值(此处remindDrink()返回None,不属于可调用对象),这既导致函数立即执行,也触发了TypeError: the first argument must be callable错误。
2. 缺少任务调度核心逻辑
你的while循环会重复添加同一个定时任务,且未调用schedule.run_pending()——这是schedule模块检查任务是否到点执行的核心方法,没有它定时任务永远不会触发。
修正后的代码
import schedule import time def remindDrink(): print("Drink Water") # 仅添加一次任务,不要放在循环内 schedule.every().day.at("16:35").do(remindDrink) while True: # 检查是否有到点的任务需要执行 schedule.run_pending() # 休眠1秒,避免占用过多CPU资源 time.sleep(1)
内容的提问来源于stack exchange,提问作者Illusioner_
相关产品推荐
相关产品推荐

