2013-07-08 10 views
17
from apscheduler.scheduler import Scheduler 
import os 
class ListHref(): 
    def __init__(self): 
     print 'In ListHref Class!' 
     self.name_hrefs = {} 
     self.name_img = {} 
     self.path = os.path.dirname(__file__) 
     print 'Out ListHref Class' 
    def other_function():... 

def job(): #function named job 
    print 'In job!' 
    book_href = ListHref() 
    print 'book_href created!' 

if __name__ == "__main__": 
    sched = Scheduler() 
    #job() #it's ok if job() called only 
    sched.daemonic = False #non daemon thread 
    sched.add_interval_job(job,minutes=0.1) 
    sched.start() 

Problema: Se il lavoro call() solo che invece di sched, è ok Così mi sono confuso che il motivo per cui il init (auto) non può chiamato completamente? e cosa c'è di sbagliato in "Impossibile trovare handerls per il logger" apscheduler.scheduler ""? Sopra risultato codice Python:Nessun gestori potrebbero essere trovati per logger "apscheduler.scheduler"

Nel lavoro()

In ListHref classe!

Nessun handerls potrebbe essere trovato per logger "apscheduler.scheduler"

Nel lavoro()

In ListHref classe!

Nel lavoro()

In ListHref classe!

... (così via)

+0

Provare a inizializzare il modulo [logging] (http://docs.python.org/2/library/logging.html). Qualcosa come 'import logging; logging.basicConfig()'. Questo creerà un gestore per il root logger e renderà felice l'apscheduler. – tdelaney

+0

Grazie! Il tuo suggerimento ha risolto il mio problema e dal file di registro ho trovato che il codice python di importazione os percorso = os.path.dirname (\ _ \ _ file \ _ \ _) 'ha creato il bug. i risultati hanno mostrato che "globale" \ _ \ _ file \ _ \ _ "non è definito", dopo averlo codificato come "percorso = 'F: \ Python_Test'", tutto è ok. Quindi, cosa c'è di sbagliato in "\ _ \ _ file \ _ \ _"? – Dyllian

+0

Non ho una buona spiegazione per questo a meno che non lo stiate digitando nell'interprete (cioè, semplicemente eseguendo python e digitandolo). Normalmente, \ _ \ _ file \ _ \ _ è il nome del file relativo del modulo corrente ma non esiste un 'modulo corrente' per l'interprete e \ _ \ _ il file \ _ \ _ non esiste. – tdelaney

risposta

40

apscheduler sta usando il pitone logging module che deve essere inizializzato. La registrazione è un po 'complicato (vedi link), ma il minimo è di:

import logging 
logging.basicConfig() 

basicConfig supporta alcune funzionalità di registrazione comuni, ma ne vale la pena capire alcuni degli usi più sofisticati per il logger.

Problemi correlati