在使用Gunicorn运行应用程序时,SQLAlchemy扩展程序未注册

时间:2015-06-10 18:08:42

标签: nginx flask flask-sqlalchemy gunicorn

我有一个可以在开发中使用的应用程序,但是当我尝试使用Gunicorn运行它时,会出现错误,即" sqlalchemy扩展名未注册"。根据我的阅读,我似乎需要在某个地方拨打app.app_context(),但我不知道在哪里。如何解决此错误?

# 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()

1 个答案:

答案 0 :(得分:11)

只有当您使用python sever.py启动应用时,if __name__ == '__main__':块才会被点击,您可以在其中使用您的应用注册数据库。

您需要在该区域之外移动该行db.init_app(app)