[英]TypeError: the first argument must be callable in scheduler library
I am getting the following error while running scheduler library.运行调度程序库时出现以下错误。 I did go through similar question and answers but somehow not able to identify the root cuase the error.
我确实经历了类似的问题和答案,但不知何故无法确定错误的根源。 Could some help where I am going wrong?
可以帮助我出错的地方吗?
TypeError: the first argument must be callable
类型错误:第一个参数必须是可调用的
import schedule
import time
class Scheduler():
def trigger_testsuite(self):
print("I am working as expected.")
def scheule_a_job(self, type="Secs", interval=5):
if (type == "Mins"):
schedule.every(interval).minutes.do(self.trigger_testsuite())
if (type == "Secs"):
schedule.every(interval).seconds.do(self.trigger_testsuite())
if (interval == "Hrs"):
schedule.every().hour.do(self.trigger_testsuite())
if (interval == "Daily"):
schedule.every().day.at("10:00").do(self.trigger_testsuite())
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == "__main__":
run = Scheduler()
run.scheule_a_job()
TraceBack:-追溯:-
I am working as expected.
Traceback (most recent call last):
File "foo/Scheduler.py", line 31, in <module>
run.scheule_a_job()
File "foo/Scheduler.py", line 16, in scheule_a_job
schedule.every(interval).seconds.do(self.trigger_testsuite())
File "foo\Python\Python38-32\lib\site-packages\schedule\__init__.py", line 440, in do
self.job_func = functools.partial(job_func, *args, **kwargs)
TypeError: the first argument must be callable
Process finished with exit code 1
Do not include the parentheses in the function passed to:不要在传递给的函数中包含括号:
schedule.every(interval).minutes.do()
So, this this line:所以,这一行:
schedule.every(interval).minutes.do(self.trigger_testsuite())
Should be:应该:
schedule.every(interval).minutes.do(self.trigger_testsuite)
And same for all the others.其他人也一样。 Final code becomes:
最终代码变为:
import schedule
import time
class Scheduler():
def trigger_testsuite(self):
print("I am working as expected.")
def scheule_a_job(self, type="Secs", interval=5):
if (type == "Mins"):
schedule.every(interval).minutes.do(self.trigger_testsuite)
if (type == "Secs"):
schedule.every(interval).seconds.do(self.trigger_testsuite)
if (interval == "Hrs"):
schedule.every().hour.do(self.trigger_testsuite)
if (interval == "Daily"):
schedule.every().day.at("10:00").do(self.trigger_testsuite)
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == "__main__":
run = Scheduler()
run.scheule_a_job()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.