фляж-сервер иногда усекает длинные ответы json - PullRequest
0 голосов
/ 18 декабря 2018

мой маршрут выбирает токены пользователя

GET /tokens

среднее время ответа составляет около 180 мс, а ответ - json.используя Flask + nginx.

В некоторых запросах содержимое ответа усекается до 33 КБ, поэтому JSON искажен.В некоторых запросах, с такими же параметрами , при почти в то же время , ответ в порядке составляет около 216 КБ.

Мой вопрос: почему это происходит и почемуэто происходит неконтролируемым образом?

вот код ответа колбы

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"

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Эта проблема была решена путем добавления

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

к Dockerfile

0 голосов
/ 18 декабря 2018

Похоже, переполнение ответа proxy_buffers и пытается временно сохранить его в proxy_temp_path , и ваше сообщение об ошибке вполне подтверждает это.Вам следует проверить права доступа к файлам пользователя nginx в этой папке.

...