2015-09-06 10 views
5

staram się zapoznać z kolbą-APScheduler plug-in poprzez następujący przykładowy kod: https://github.com/viniciuschiele/flask-apscheduler/blob/master/examples/jobs.py#L1Jak korzystać skrzynkowego APScheduler w istniejącej aplikacji Kolby

Mój projekt ma następującą strukturę:

backend 
    run.py 
    application 
     __init__.py 
     utilities 
      __init__.py 
      views 
      models 

gdzie

backend>run.py jest:

from application import app 
app.run(debug=True) 
from application import scheduler 
scheduler.start() 

backend>application>__init__.py jest:

from flask import Flask 
app = Flask(__name__) 
from application.utilities.views import Config 
from flask_apscheduler import APScheduler 
app.config.from_object(Config()) 
scheduler = APScheduler() 
scheduler.init_app(app) 

backend>application>utilities>__init__.py jest pusty

backend>application>utilities>models.py jest pusty

backend>application>utilities>views.py jest:

class Config(object): 
    JOBS = [ 
     { 
      'id': 'job1', 
      'func': 'application:utilities:views:job1', 
      'args': (1, 2), 
      'trigger': { 
       'type': 'cron', 
       'second': 10 
      } 
     } 
    ] 

def job1(a, b): 
    print(str(a) + ' ' + str(b)) 

Jednak pojawia się następujący błąd:

(env)$ python run.py local 
Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from application import app 
    File "HOME/backend/application/__init__.py", line 106, in <module> 
    scheduler.init_app(app) 
    File "/home/xxxxxx/.anaconda/envs/env/lib/python2.7/site-packages/flask_apscheduler/scheduler.py", line 73, in init_app 
    self.__load_jobs(app) 
    File "/home/xxxxxx/.anaconda/envs/env/lib/python2.7/site-packages/flask_apscheduler/scheduler.py", line 136, in __load_jobs 
    self.__load_job(job, app) 
    File "/home/xxxxxx/.anaconda/envs/env/lib/python2.7/site-packages/flask_apscheduler/scheduler.py", line 159, in __load_job 
    func = ref_to_obj(func) 
    File "/home/xxxxxx/.anaconda/envs/env/lib/python2.7/site-packages/apscheduler/util.py", line 264, in ref_to_obj 
    raise LookupError('Error resolving reference %s: error looking up object' % ref) 
LookupError: Error resolving reference application:utilities:views:job1: error looking up object 

Czy moja struktura wygląda dobrze? Czy umieściłeś właściwy kod we właściwym miejscu? Co powinienem zmienić, aby działało?

Odpowiedz

7

Twój odnośnik powinien mieć tylko jeden dwukropek (":"). Dwukropek oddziela wymagany import od zmiennej, która musi zostać sprawdzona. A więc:

'func': 'application.utilities.views:job1' 
Powiązane problemy