我正在构建一个简单的flask应用程序,jsonify()
在我的本地主机上运行良好,它将以json格式返回新行和适当缩进的信息。然而,当在Heroku上运行完全相同的代码时,它省略了新行和缩进。
在本地主机上:
关于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)
这个简单的flask应用程序可以像上面链接的照片一样在我的本地主机上打印,但是在heroku上不会。看起来它返回纯文本。在这里可以看到https://jojoapi.herokuapp.com/test。我使用gunicorn,不知道是否有任何影响的输出
编辑2
因此,我按照注解app.config["DEBUG"] = True
中的建议手动将debug设置为True,现在它在heroku上正常工作
1条答案
按热度按时间vi4fp9gy1#
一些服务器(不仅仅是Heroku)可能不会直接运行你的脚本,也不会执行
app(debug=True)
,但是他们可能会将app
导入自己的代码,并使用自己的参数app(...own args...)
运行它-这可能会造成问题。您可以使用不同的方法在代码中设置调试模式。
最后,您可以尝试在Linux中设置环境变量
或
参见文档:调试模式
Flask文档:Standalone WSGI Containers-它显示了导入
app
(作为myproject:app
)的服务器,它们可以使用自己的参数运行。