Python 将参数传递给apscheduler处理程序函数
我正在使用apscheduler,并尝试将参数传递给启动计划作业时调用的处理程序函数:Python 将参数传递给apscheduler处理程序函数,python,Python,我正在使用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 m
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
是否可以将参数传递到函数处理程序中。如果没有,还有其他选择吗?基本上,我需要每个计划作业返回一个字符串,在创建计划时传入该字符串。谢谢 printit(sometext)
不是可调用的,它是调用的结果
您可以使用:
lambda: printit(sometext)
这是一个可以稍后调用的函数,它可能会执行您想要的操作。由于这是我在遇到相同问题时发现的第一个结果,因此我添加了一个更新的答案: 根据当前apscheduler(v3.3.0)的配置,您可以在
add_job()
函数中传递函数参数
因此,在OP的情况下,它将是:
sched.add_job(printit, "cron", [sometext], second="*/5")
真是太好了!你认为你能很快解释为什么会这样做/如何修复错误吗?谢谢这是解释。您需要传递一个函数,即可以调用的东西。def foo():pass“foo”是函数“foo()”是调用该函数的返回值。@still.Learning Python支持在运行时使用名为“lambda”的构造创建匿名函数(即未绑定到名称的函数)。这是一个普通函数->定义f(h):返回h10,这是一个lambda函数->g=lambda h:h10,注意区别;)如果使用命名参数,则应该在作业函数参数前面加上arg。示例:args=[arg1,arg2]什么是
,而True:time.sleep(1)
?