Наши веб-серверы запускают приложение 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/;