2013-12-29 2 views
1

Extensions 구성 매개 변수가있는 Flask 앱을 ​​실행하는 파이썬 방법을 찾는 데 어려움이 있습니다.플라스크 확장 및 구성

from flask import Flask 
from flask.ext.script import Manager 
from flask.ext.sqlalchemy import SQLAlchemy 
from flask.ext.redis import Redis 

app = Flask(__name__) 

manager = Manager(app) 
db = SQLAlchemy(app) 
redis = Redis(app) 

내가 디버깅 및 배포에 대한 별도의 파일에서 응용 프로그램의 구성을 저장하고 Flask.config.from_pyfile로로드하기로 결정

여기 플라스크 응용 프로그램과 확장을 초기화 내 myapp/__init__.py,입니다.

구성 파일을 포함, 여러 가지 옵션이 있습니다

SQLALCHEMY_DATABASE_URI = "sqlite:////tmp/test.db" 
REDIS_HOST = '127.0.0.1' 
REDIS_PORT = 6379 
REDIS_DB = 0 

내가 서버 실행 플라스크-스크립트를 사용합니다 (/tmp/test.db에서 SQLite 데이터베이스를 만드는)

from myapp import app, manager 

@manager.command 
def debug(): 
    app.config.from_pyfile("debug.cfg") 
    app.run() 

SQLAlchemy의 확인을 작동하는 동안, 나는 Redis 인스턴스를 아직 실행하지 않았기 때문에 열심히 시도하고 REDIS_HOSTapp.config에서 찾은 다음 구성 파일에서로드했습니다.

설정을 파일에서 가져 오기 전에 기본 설정을 하드 코딩하지 않아도 무시할 수있는 방법이 있습니까?

답변

3

예, appRedis() 생성자에 전달하면 구성을로드해야합니다.

app 전달 연기 구성을로드 한 후 redis.init_app(app) 전화 :

app = Flask(__name__) 

manager = Manager(app) 
db = SQLAlchemy() 
redis = Redis() 

def attach_extensions(app): 
    db.init_app(app) 
    redis.init_app(app) 

구성이로드 된 후 언제 :

from myapp import app, manager, attach_extensions 

@manager.command 
def debug(): 
    app.config.from_pyfile("debug.cfg") 
    attach_extensions(app) 
    app.run() 
+0

오. 'init_app'에 대해 몰랐습니다. 고마워요! –