2017-09-08 5 views
2

Je veux utiliser apscheduler.scheduler dans mon projet et c'est mon codePython- TypeError: func doit être appelable

import sys 
from time import sleep 
from apscheduler.scheduler import Scheduler 

TOKEN = "****" 

sched = Scheduler() 
sched.start() 

def my_job(text): 
    print(text) 

def main() : 
    job = sched.add_date_job(my_job('25'), '2017-09-08 14:08:05', args=['text']) 
    while True: 
     sleep(1) 
     sys.stdout.write('.'); sys.stdout.flush() 

if __name__ == '__main__': 
    main() 

et je suis arrivé cette exception

25 
Traceback (most recent call last): 
    File "F:\+faeze\workspace\testHelloWorld\src\test\testDateTime.py", line 22, in <module> 
    main() 
    File "F:\+faeze\workspace\testHelloWorld\src\test\testDateTime.py", line 16, in main 
    job = sched.add_date_job(my_job('25'), '2017-09-08 14:08:05', args=['text']) 
    File "C:\Python27\lib\site-packages\apscheduler\scheduler.py", line 318, in add_date_job 
    return self.add_job(trigger, func, args, kwargs, **options) 
    File "C:\Python27\lib\site-packages\apscheduler\scheduler.py", line 284, in add_job 
    options.pop('coalesce', self.coalesce), **options) 
    File "C:\Python27\lib\site-packages\apscheduler\job.py", line 47, in __init__ 
    raise TypeError('func must be callable') 
TypeError: func must be callable 

où est mon erreur ??

mise à jour: que signifie TypeError: func must be callable?

+1

Cela signifie que la mauvaise variable est passé à la méthode de add_job, et la méthode add_job reçoit une variable/non rachetable au lieu d'une fonction réelle – AK47

+0

'func' est le paramètre pour vos méthodes, il essaie d'appeler func() à un moment donné et il ne peut pas .. par exemple func = '10' ... func() ne fera rien .. numéro 10 n'est pas appelable – AK47

Répondre

2

Vous devez modifier la ligne suivante.

job = sched.add_date_job(my_job, '2017-09-08 14:08:05', ('25',)) 

Cela signifie méthode my_job sera appelée à l'heure spécifiée avec l'argument 25

+0

Ceci est également faux. L'argument "args" est supposé être une liste ou un tuple. Avec cela, vous obtiendrez une erreur "args doit être une itération non-chaîne". –

+0

@ AlexGrönholm: J'ai mis à jour ma réponse. – Arun

+0

Cela me semble bon. –