我正在使用apscheduler,我正在尝试将参数传递给在调度作业启动时调用的处理函数:
from apscheduler.scheduler import Scheduler
import time
def printit(sometext):
print "this happens every 5 seconds"
print sometext
sched = Scheduler()
sched.start()
sometext = "this is a passed message"
sched.add_cron_job(printit(sometext), second="*/5")
while True:
time.sleep(1)
这样做会给我带来以下错误:
TypeError: func must be callable
是否可以将参数传递给函数处理程序。如果没有,有没有其他选择?基本上,我需要每个预定作业返回我在创建计划时传入的字符串。谢谢!
答案 0 :(得分:16)
printit(sometext)
不是可调用的,而是调用的结果。
您可以使用:
lambda: printit(sometext)
以后可以调用哪个可调用,可能会执行您想要的操作。
答案 1 :(得分:15)
由于这是我遇到同样问题时发现的第一个结果,我正在添加更新的答案:
根据当前apscheduler(v3.3.0)的docs,您可以传递add_job()
函数中的函数参数。
所以在OP的情况下,它将是:
sched.add_job(printit, "cron", [sometext], second="*/5")