我正在使用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)
Run Code Online (Sandbox Code Playgroud)
这样做会给我以下错误:
TypeError: func must be callable
Run Code Online (Sandbox Code Playgroud)
是否可以将参数传递给函数处理程序.如果没有,有没有其他选择?基本上,我需要每个预定作业返回我在创建计划时传入的字符串.谢谢!
Nie*_*iel 18
由于这是我遇到同样问题时发现的第一个结果,我正在添加更新的答案:
根据当前apscheduler(v3.3.0)的文档,您可以传递函数中的add_job()函数参数.
因此,在OP的情况下,它将是:
sched.add_job(printit, "cron", [sometext], second="*/5")
Run Code Online (Sandbox Code Playgroud)
Ali*_*har 17
printit(sometext) 不是可调用的,它是调用的结果.
您可以使用:
lambda: printit(sometext)
Run Code Online (Sandbox Code Playgroud)
哪个是稍后调用的可调用函数,可能会执行您想要的操作.
| 归档时间: |
|
| 查看次数: |
11558 次 |
| 最近记录: |