调度程序 - self.job_func = functools.partial(job_func,* args,** kwargs)

时间:2017-05-17 21:06:31

标签: python multithreading python-2.7 scheduler

我在python中使用库调度程序来执行cron作业。我想向要安排的作业发送多个参数。但我得到了以下错误:

cd E:\
& "\\mynetworkpath\installer.exe"

以下是我的代码。我正在使用多线程,并希望安排我的线程任务:

File "/Library/Python/2.7/site-packages/schedule/__init__.py", line 352, in do
self.job_func = functools.partial(job_func, *args, **kwargs)
TypeError: the first argument must be callable

这不起作用:

class myThread (threading.Thread):
    def __init__(self, threadID, name, counter):
    threading.Thread.__init__(self)
    self.threadID = threadID
    self.name = name
    self.counter = counter

def run(self):
    print "Starting " + self.name
    SomeClassInstance = SomeClass() 

下面也没有帮助:

schedule.every(10).minutes.do(phoneidLogger.getSplunkLogs(arg1,arg2,arg3,arg4))

1 个答案:

答案 0 :(得分:0)

您需要将自由函数传递给调度程序。

请记住

phoneidLogger.getSplunkLogs(arg1, arg2, arg3)

相当于

PhoneLoggerClass.getSplunkLogs(phoneidLogger, arg1, arg2, arg3)

知道这一点,正确的做法是将phoneidLogger作为参数传递给我们的调度程序。

schedule.every(10).minutes.do(PhoneLoggerClass.getSplunkLogs,
                              phoneidLogger,
                              arg1, arg2, arg3, arg4)