【问题标题】:Scheduler - self.job_func = functools.partial(job_func, *args, **kwargs)调度程序 - self.job_func = functools.partial(job_func, *args, **kwargs)
【发布时间】:2017-05-17 21:06:30
【问题描述】:

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

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))

以下也没有帮助:

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

【问题讨论】:

  • job_func 定义在哪里?
  • 抱歉无法正确格式化 - 它的 phoneidLogger.getSplunkLogs 其中 phoneidLogger 是一个类的实例。
  • 这里的phoneidLogger其实是SomeClassInstance

标签: python multithreading python-2.7 scheduler


【解决方案1】:

您需要将一个免费函数传递给您的调度程序。

请记住

phoneidLogger.getSplunkLogs(arg1, arg2, arg3)

等价于

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

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

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

【讨论】:

  • schedule.every(10).minutes.do(splunkLogger.getSplunkLogs,phoneidLogger,arg1,arg2,arg3,arg4) --- 正在让我退出线程。它没有执行。
  • 那么您需要在问题中提供更多详细信息。提供minimal reproducible example
  • splunkLogger 是一个类,88pho‌​neidLogger 是它的实例,getSplunkLogs 是函数。
  • def run(self): print "Starting " + self.name SomeClassInstance = SomeClass() schedule.every(10).minutes.do(splunkLogger.getSplunkLogs,pho‌​ neidLogger,arg1,arg2‌​,arg3,arg4) print "Exiting " + self.name
  • 以上代码不执行作业。它似乎忽略了调度指令。
猜你喜欢
  • 1970-01-01
  • 2013-08-04
  • 2020-09-16
  • 2017-01-28
  • 1970-01-01
  • 2017-03-26
  • 2021-07-26
  • 2022-09-22
  • 2020-10-18
相关资源
最近更新 更多