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

时间:2018-12-18 15:12:33

标签: http nginx flask uwsgi

我的路线正在获取用户令牌

class Animal(object):
    def __init__(self, name=None):
        if name == 'cat':
            self._object = Cat()
        elif name == 'dog':
            self._object = Dog()
        else:
            self._object = None

    def execute(self):
        if self._object is not None:
            self._object.execute()
        else:
            print("I am animal")

平均响应时间为180毫秒左右,响应为json。 使用Flask + Nginx。

一些请求,响应内容被截断为33kb左右,因此JSON格式不正确。某些请求,使用相同参数,几乎在相同时间,响应大约为216kb。

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

这是烧瓶响应代码

GET /tokens

我发现了与nginx有关的问题,因为失败的响应具有此日志

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

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

    return NormalResponse(res)

2 个答案:

答案 0 :(得分:0)

似乎响应溢出proxy_buffers,并尝试将其临时保存到proxy_temp_path,并且您的错误消息已完全确认。您应该检查该文件夹中nginx用户的文件权限。

答案 1 :(得分:0)

添加此问题已解决

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

Dockerfile