Jsonify无法在Heroku上打印

p4rjhz4m  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(499)

我正在构建一个简单的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上正常工作

vi4fp9gy

vi4fp9gy1#

一些服务器(不仅仅是Heroku)可能不会直接运行你的脚本,也不会执行app(debug=True),但是他们可能会将app导入自己的代码,并使用自己的参数app(...own args...)运行它-这可能会造成问题。
您可以使用不同的方法在代码中设置调试模式。

app.config["DEBUG"] = True

最后,您可以尝试在Linux中设置环境变量

export FLASK_DEBUG=1

export FLASK_ENV=development

参见文档:调试模式
Flask文档:Standalone WSGI Containers-它显示了导入app(作为myproject:app)的服务器,它们可以使用自己的参数运行。

相关问题