Назад | Перейти на главную страницу

Буфер или очередь запросов nginx / uwsgi

Наши веб-серверы запускают приложение Python за nginx + uwsgi.

Иногда у нас бывают короткие всплески (2-5x в среднем без запросов) в течение секунды, в результате чего некоторые запросы получают 502, если нет рабочих, доступных для их обработки.

Есть ли способ для nginx или uwsgi поставить эти запросы в очередь и обслуживать их, когда рабочие станут доступны?

Лучше с небольшим увеличением времени отклика, чем с ошибкой ;-)

У nginx нет возможности сделать это. Директива очередь доступен как часть Nginx только коммерческая подписка. https://nginx.ru/en/docs/http/ngx_http_upstream_module.html#queue

Хорошее решение - запустить несколько (2 и более) бэкэндов uwsgi с nginx. uwsgi_next_upstream директива https://nginx.ru/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream.

Также вы можете попробовать error_page 502 =307 http://backup.example.com/;