2015-06-10 7 views
5

Ho un'applicazione che funziona in sviluppo, ma quando provo a eseguirlo con Gunicorn si dà errore che "l'estensione sqlalchemy non è stata registrata". Da quello che ho letto sembra che ho bisogno di chiamare app.app_context() da qualche parte, ma non sono sicuro di dove. Come posso risolvere questo errore?L'estensione SQLAlchemy non è registrata quando si esegue l'app con Gunicorn

# run in development, works 
python server.py 

# try to run with gunicorn, fails 
gunicorn --bind localhost:8000 server:app 

AssertionError: The sqlalchemy extension was not registered to the current application. Please make sure to call init_app() first. 

server.py:

from flask.ext.security import Security 
from database import db 
from application import app 
from models import Studio, user_datastore 

security = Security(app, user_datastore) 

if __name__ == '__main__': 
    # with app.app_context(): ?? 
    db.init_app(app) 
    app.run() 

application.py:

from flask import Flask 

app = Flask(__name__) 
app.config.from_object('config.ProductionConfig') 

database.py:

from flask.ext.sqlalchemy import SQLAlchemy 
db = SQLAlchemy() 

risposta

6

Solo quando si avvia l'app con python sever.py è l'hit del blocco if __name__ == '__main__':, dove stai registrando il tuo database con la tua app.

Avrete bisogno di spostare quella linea, db.init_app(app), al di fuori di quel blocco.

+0

È stato facile, grazie! – duffn