2017-05-17 6 views
0

J'utilise le planificateur de bibliothèque pour les tâches cron en python. Je veux envoyer plusieurs arguments au travail à planifier. Mais je reçois l'erreur follwing:Scheduler - self.job_func = functools.partial (job_func, * args, ** kwargs)

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 

Voici ci-dessous mon code. J'utilise multithreading et que vous souhaitez programmer mes tâches de fil:

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

Cela ne fonctionne pas:

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

ci-dessous aussi n'a pas aidé:

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

Où 'job_func' est-il défini? –

+0

Désolé, il ne peut pas être formaté correctement - Son ** phoneidLogger.getSplunkLogs ** où phoneidLogger est une instance d'une classe. – user93726

+0

Ici phoneidLogger est en fait SomeClassInstance – user93726

Répondre

0

Vous devez passer une fonction gratuite pour votre planificateur.

Gardez à l'esprit que

phoneidLogger.getSplunkLogs(arg1, arg2, arg3) 

est équivalent à

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

Sachant cela, la bonne chose à faire est de passer en phoneidLogger comme argument à notre planificateur.

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

** schedule.every (10) .minutes.do (splunkLogger.getSplunkLogs, phoneidLogger, arg1, arg2, arg3, arg4) ** --- me quitte du fil. Ce n'est pas en cours d'exécution. – user93726

+0

Ensuite, vous devez donner beaucoup plus de détails dans votre question. Fournissez un [mcve]. –

+0

Qu'est-ce que "me sortir du fil"? –