Python 使用Gunicorn和Nginx在linux Debian上运行Flask Web App时出现问题
因此,我目前正试图使用Flask、Debian 9和Gunicorn将我的Web应用程序上线。 键入>gunicorn wsgi:app后,我遇到的问题是:Python 使用Gunicorn和Nginx在linux Debian上运行Flask Web App时出现问题,python,nginx,debian,gunicorn,wsgi,Python,Nginx,Debian,Gunicorn,Wsgi,因此,我目前正试图使用Flask、Debian 9和Gunicorn将我的Web应用程序上线。 键入>gunicorn wsgi:app后,我遇到的问题是: [2019-11-15 12:22:11 +0000] [11643] [ERROR] Exception in worker process Traceback (most recent call last): File "/root/testing/venv/local/lib/python2.7/site-packages/gun
[2019-11-15 12:22:11 +0000] [11643] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/root/testing/venv/local/lib/python2.7/site-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
File "/root/testing/wsgi.py", line 1, in <module>
from __init__ import app
File "/root/testing/__init__.py", line 44, in <module>
create_app()
File "/root/testing/__init__.py", line 24, in create_app
from .models import User
ValueError: Attempted relative import in non-package
[2019-11-15 12:22:11 +0000] [11643] [INFO] Worker exiting (pid: 11643)
[2019-11-15 12:22:11 +0000] [11639] [INFO] Shutting down: Master
[2019-11-15 12:22:11 +0000] [11639] [INFO] Reason: Worker failed to boot.
Myinit.py:
# init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_bootstrap import Bootstrap
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
Bootstrap(app)
app.config['SECRET_KEY'] = 'secretkey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
db.init_app(app)
login_manager = LoginManager()
login_manager.login_view = 'auth.login'
login_manager.init_app(app)
from .models import User
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
if __name__ == '__name__':
app.run()
return app
create_app()
My models.py:
models.py
注意:所有Indepences都安装在我的virtualenv中,我尝试使用gunicorn,但只使用以下代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World!"
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')
这非常好。我改变了每一个有问题的导入。并将init更改为app,删除了create\u app函数。如果您从未从
\uuuuuu init\uuuuu
导入,则从包导入。但是最有可能的\uuuu init\uuuuuuuuuuupy
应该类似于app.py
,然后您将导入模型
,而不带点。@klauds。谢谢您的回复。我试了一下,结果发现一个错误:没有名为db的模块。这是指models.py中的第4行。同样,对models进行相同的导入。您能稍微澄清一下吗,因为来自。import db
正在导入数据库文件。那么,在模型中该如何实现呢?只需导入数据库即可。
from flask_login import UserMixin
from . import db
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True) # primary keys are required by SQLAlchemy
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(100))
name = db.Column(db.String(1000))
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World!"
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')