TL;DR 编辑:我没有设置正确的文件夹权限。
当我通过 source venv/bin/activate && python run.py
运行 flask 时,一切正常。
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, world!"
if __name__ == "__main__":
app.debug = True
app.run(host='0.0.0.0', port=8080)
但是当我使用 nginx/emperor.uwsgi 运行同一个应用程序时,每次对服务器的命中都会返回 500。如果我注释掉 SQLAlchemy 导入,那么页面会按预期加载。
根据 this thread我试过启用惰性/惰性应用程序,但没有效果。 Flask 引发异常,因此 nginx/uwsgi 没有记录任何内容。
我已经尝试使用 from werkzeug.debug import DebuggedApplication
但仍然只是在我的浏览器中得到绝对的准系统“内部服务器错误”。
配置:
[uwsgi]
uid = http
gid = http
socket = /var/run/project.uwsgi.sock
chown-socket = http
chmod-socket = 664
pidfile = /var/run/project.master.pid
master = true
lazy = true
lazy-apps = true
chdir = /srv/http/project
python-path = /srv/http/project
virtualenv = /srv/http/project/venv
module = run
callable = app
plugin = python
home = venv
没什么异常。
source venv/bin/activate && pip list && deactivate
输出:
Flask (0.10.1)
Flask-SQLAlchemy (2.0)
itsdangerous (0.24)
Jinja2 (2.7.3)
MarkupSafe (0.23)
pip (6.0.8)
setuptools (12.0.5)
SQLAlchemy (0.9.9)
uWSGI (2.0.9)
Werkzeug (0.10.1)
所有常见的嫌疑人都在场。
对此一无所知,有人知道如何调试/处理这个吗?
最佳答案
你是否也通过包管理器安装uwsgi-emperor?
请确保您使用正确的 uwsgi 进行跟踪。
有时从 pip 和 apt 安装 uwsgi 会产生这个问题。我自己将 /etc/init.d/uwsgi
中的 /usr/bin/uwsgi
替换为 /usr/local/bin/uwsgi
。
如果有的话,您还应该检查路径权限和数据库访问权限。
关于python - uWSGI 中的 Flask 仅因导入 SQLAlchemy 而导致 500 Internal Server Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137436/