Python Flask中出现500 HTTP异常,同时尝试通过app.open_resource()读取文件
差不多就是标题。我在本地计算机上尝试了该代码,结果很好,但在部署(Phusion Passenger)时,这似乎不起作用Python Flask中出现500 HTTP异常,同时尝试通过app.open_resource()读取文件,python,flask,Python,Flask,差不多就是标题。我在本地计算机上尝试了该代码,结果很好,但在部署(Phusion Passenger)时,这似乎不起作用 from flask import Flask import flask import json import os app = Flask(__name__) @app.route('/mods') def mods_index(): try: reader = app.open_resource(os.path.join(app.root_p
from flask import Flask
import flask
import json
import os
app = Flask(__name__)
@app.route('/mods')
def mods_index():
try:
reader = app.open_resource(os.path.join(app.root_path , 'static', 'data', 'modifications.json'))
modifications = json.load(reader)
reader.close()
except:
flask.abort(500)
return flask.render_template('mods_index.html', mods=modifications)
我认为这是一个文件路径问题,特别是这一行:
reader=app.open\u resource(os.path.join(app.root\u path,'static','data','modifications.json')
看起来不正确
根据Flask的:app.open_resource(…)
“从应用程序的资源文件夹中打开资源”。在代码中,指定应用程序的根路径两次:
app.open\u资源(..)
app.root\u路径
因此,您的服务器正试图从以下位置打开您的
修改.json
文件:/添加特定的错误处理程序(例如IOError
)将有助于您更好地理解这个问题,使用类似traceback.print\u exc()
的方法也是如此。也就是说,您的错误可能是软件无法找到JSON文件。您的try/except中有错误,因此您的except正在运行,而不是try,而flask将以500代码中止,因为您告诉它。尝试使用ide的调试功能,或者如果需要,请将内容打印到标准输出(或文本文件),以确定是什么原因导致except而不是Try触发。删除Try except并设置app.debug=True
。因为它是这个应用程序是不可调试的。非常感谢!最后它确实起了作用,我对此非常生气,以至于我没有意识到这只是一个路径问题。很高兴我能帮上忙!
reader_path = os.path.join('static', 'data', 'modifications.json'))
with app.open_resource(reader_path) as f:
contents = f.read()
# do_something_with(contents)