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

duf*_*ffn 7 nginx flask gunicorn flask-sqlalchemy

我有一个适用于开发的应用程序,但是当我尝试使用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.
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

application.py:

from flask import Flask

app = Flask(__name__)
app.config.from_object('config.ProductionConfig')
Run Code Online (Sandbox Code Playgroud)

database.py:

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)

Cel*_*leo 11

只有当您启动应用程序时,python sever.py才会if __name__ == '__main__':触发块命中,您可以在其中使用应用程序注册数据库.

你需要db.init_app(app)在那个区域之外移动那条线.