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

问题描述 投票:0回答:2

我的路线是获取用户令牌

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"
http nginx flask uwsgi
2个回答
0
投票

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


0
投票

此问题已通过添加解决

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

Dockerfile

© www.soinside.com 2019 - 2024. All rights reserved.