提示:该错误出现的原因有很多种,并不只是uwsgi.ini没配置好,作者就在此处踩了坑。

最近打算部署flask项目,使用的组合是Flask+uwsgi+Nginx,先使用了最简单但的flask项目部署测试

文件路径为/opt/mycode/test/test.py

from flask import Flask

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

uwsgi配置如下

[uwsgi]
socket = :5000
chdir = /opt/mycode/test
wsgi-file =test.py
callable = app
processes = 4
threads = 2
stats = 0.0.0.0:9191
pidfile = uwsgi.pid
daemonize = logs/uwsgi.log
master = true
home=/opt/software/anaconda3/envs/wx_app
py-autoreload= 1
~                               

启动uwsgi后,访问项目,浏览器出现 Internal Server Error

检查uwsgi日志,发现日志提示问题

no python application found, check your startup logs for errors

于是尝试网上搜索各种解答,基本都是说uwsgi配置有问题,遂检查uwsgi.ini配置文件,尝试修改配置文件(其实配置文件并没问题)。

重新检查日志文件,发现还有一处之前没注意到的提示

ImportError: cannot import name ‘url_quote‘ from ‘werkzeug.urls‘

怀疑第一个错误是该错误引起的,这个错误的原因是因为Werkzeug库的版本较高,为3.0.1版本,需要降低Werkzeug的版本,于是将Werkzeug版本降为2.3.7,解决报错,同时解决

no python application found, check your startup logs for errors

最终解决问题,页面成功访问

因此,在遇到此错误时,检查uwsgi配置文件没有错误之后,还要检查自己的代码是否正确,以及库的版本是否匹配!!!

更多推荐