flask服务器有时会截断长json响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask服务器有时会截断长json响应相关的知识,希望对你有一定的参考价值。

我的路线是获取用户令牌

GET /tokens

平均响应时间约为180ms,响应为json。使用Flask + nginx

一些请求,响应内容被截断大约33kb,因此JSON格式不正确。一些请求,具有相同的参数,几乎同时,响应可以在216kb左右。

我的问题是,为什么会发生这种情况,为什么这种情况会以不合理的方式发生?

这是烧瓶响应代码

class NormalResponse(Response):
    def __init__(self, response):
        super(NormalResponse, self).__init__(response, 200)

    res = json.dumps(paginator.paginate(tokens))

    return NormalResponse(res)

我发现问题与nginx有关,因为失败的响应有这个日志

2018/12/18 16:35:17 [crit] 16#16: *95010 open() "/var/tmp/nginx/uwsgi/1/42/0000000421" failed (13: Permission denied) while reading upstream, client: 172.31.72.76, server: , request: "GET /tokens?limit=501&offset=0&order=desc&owner_id=11111 HTTP/1.1", upstream: "uwsgi://unix:/run/server.socket:", host: "oauth.dev.bla_bla.com"
答案

似乎响应溢出proxy_buffers并尝试暂时将其保存到proxy_temp_path并且您的错误消息确认了它。您应该检查该文件夹上nginx用户的文件权限。

另一答案

此问题已通过添加解决

RUN chown -R www-data:www-data /var/tmp/nginx

Dockerfile

以上是关于flask服务器有时会截断长json响应的主要内容,如果未能解决你的问题,请参考以下文章

NXLog 和长消息

Firefox 开发者工具截断长网络响应,Chrome 不显示

PYODBC 截断 SQL Server FOR JSON 查询的响应

Bootstrap 3以响应方式截断表格行内的长文本

Heroku 截断 HTTP 响应?

Laravel Eloquent 对象,长文本被截断