【问题标题】:Using schedule module to reming me to drink water every ten seconds使用计划模块提醒我每十秒喝一次水
【发布时间】:2022-08-16 16:43:08
【问题描述】:

我正在使用计划模块提醒我每十秒喝一次水

import schedule


def remindDrink():
    print(\"Drink Water\")
while True:
    schedule.every().day.at(\"16:35\").do(remindDrink())

所以这里的问题是任务被执行,但不是在给定时间立即执行,并且 VSCode 向我抛出了一个奇怪的错误

Traceback (most recent call last):
  File \"e:\\Code\\Python Code\\randomModule.py\", line 12, in <module>
    schedule.every().day.at(\"16:31\").do(sendNotification())
  File \"C:\\Users\\PC\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\schedule\\__init__.py\", line 625, in do
    self.job_func = functools.partial(job_func, *args, **kwargs)
TypeError: the first argument must be callable
PS E:\\Code\\Python Code> 

这是错误,我做错了什么?

标签: python schedule


【解决方案1】:

相同的模块不同的方法,我个人更喜欢这种方法,因为它可以保留我的工作干净的, 便于理解乍一看,当然很容易重构.

from schedule import every, repeat, run_pending
import time

@repeat(every().day.at("16:35"))
def remindDrink():
    print("Drink Water")

while True:
    run_pending()
    time.sleep(1)

【讨论】:

  • 绝对什么都不做
  • 哦,等一下,它起作用了,我忘记了从 16:35 开始的时间已经过去了
  • 我改变了执行时间,你能告诉我我做错了什么吗?
  • 记住你给了它时间“16:35”每天。所以在那之前它不会执行,你可以改变(every().day.at("16:35"))运行几秒钟以确认它是否有效。
  • 因为你没有包括schedule.run_pending()同时和在应该只包含函数名而不包含()
【解决方案2】:

do() 函数内的最后一行从remindDrink() 中删除()

您的代码应如下所示:

schedule.every().day.at("16:35").do(remindDrink)

回头参考这个问题:TypeError: the first argument must be callable in scheduler library

【讨论】:

  • 当我这样做时它什么也不做
猜你喜欢
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多