我正在构建一个简单的flask应用程序,jsonify()
在我的本地主机上运行良好,它将以json格式返回带有新行和适当缩进的信息,但是在heroku上运行完全相同的代码时,它将省略了新的行和缩进
This is how it looks on my localhost和this is on heroku
jsonify()
的文档中已提及
如果JSONIFY_PRETTYPRINT_REGULAR配置参数设置为True或Flask应用程序在调试模式下运行,则该函数的响应将很漂亮地打印
我都准备好了
app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
app.run(debug=True)
我尝试手动将内容类型设置为application / json,但这无济于事,甚至尝试使用json.dumps()
并得到相同的结果
return jsonify(data), 200, {'Content-Type': 'application/json; charset=utf-8'}
关于什么可能导致heroku打印不美观的任何输入?
编辑:
from flask import request, jsonify, Flask
app = Flask(__name__)
@app.route('/test', methods = ['GET'])
def test():
test_dict = {"Key1": "Value1", "Key2": ["Value2","Value2","Value2",]}
print(jsonify(test_dict).headers)
return jsonify(test_dict)
if __name__ == '__main__':
app.run(debug=True)
这个简单的烧瓶应用程序可以像上面链接的照片一样在我的本地主机上漂亮地打印,但是在heroku上却不会。看起来它正在返回纯文本。可以在这里https://jojoapi.herokuapp.com/test中看到。 我正在使用Gunicorn,不确定是否会影响输出
编辑2
因此,我按照注释app.config["DEBUG"] = True
中的建议将手动调试设置为True,并且现在可以在heroku上正常使用
答案 0 :(得分:0)
某些服务器(不仅是Heroku)可能不会直接运行您的脚本并且不执行app(debug=True)
,但是它们可能会导入app
来拥有自己的代码并使用自己的参数app(...own args...)
来运行它-会出问题。
您可以使用其他方法在代码中设置调试模式。
app.config["DEBUG"] = True
最终您可以尝试在Linux中设置环境变量
export FLASK_DEBUG=1
或
export FLASK_ENV=development
查看文档:{{3}}
烧瓶文档:Debug Mode-它显示了导入app
(作为myproject:app
)的服务器,并且它们可以使用自己的参数运行。