Vou me concentrar no comportamento lento do cliente e em como sua configuração lida com isso, mas não fique tentado a acreditar que esse é o único benefício. O mesmo método que beneficia os clientes lentos também traz benefícios para clientes rápidos, manuseio de SSL, lidar com surtos de tráfego e outros aspectos da veiculação de HTTP na Internet.
Gunicorn é um software de pré-bifurcação. Para comunicações de baixa latência, como o balanceador de carga para o servidor de aplicativos ou a comunicação entre serviços, os sistemas de pré-fork podem ser muito bem-sucedidos. Não há nenhum custo na criação de um processo para manipular a solicitação e um único processo pode ser dedicado a manipular uma única solicitação; a eliminação dessas coisas pode levar a um sistema global mais rápido e eficiente até que o número de conexões simultâneas exceda o número de processos disponíveis para lidar com elas.
Na sua situação, você está lidando com clientes de alta latência na Internet. Esses clientes lentos podem comprometer esses mesmos processos. Quando o QPS é importante, o código do aplicativo precisa receber, manipular e resolver a solicitação o mais rápido possível para que ela possa passar para outra solicitação. Quando os clientes lentos se comunicam diretamente com seu sistema, eles atam esse processo e o atrasam. Em vez de manipular e descartar a solicitação o mais rápido possível, esse processo agora também precisa aguardar o cliente lento. QPS efetivo cai.
Lidar com um grande número de conexões com muito pouca CPU e custo de memória é o que os servidores assíncronos como o Nginx são bons. Eles não são afetados da mesma maneira negativa por clientes lentos porque são adeptos de lidar com um grande número de clientes simultaneamente. No caso do Nginx, rodando em hardware moderno, ele pode lidar com dezenas de milhares de conexões de uma só vez.
O Nginx na frente de um servidor de pré-separação é uma ótima combinação. O Nginx lida com comunicações com clientes e não sofre penalidade por lidar com clientes lentos. Ele envia solicitações para o back-end com a mesma rapidez com que o back-end pode lidar com essas solicitações, permitindo que o backend seja tão eficiente quanto possível com os recursos do servidor. O backend retorna o resultado assim que é calculado, e o Nginx armazena essa resposta para alimentá-lo para desacelerar os clientes em seu próprio ritmo. Enquanto isso, o backend pode passar a lidar com outro pedido, mesmo que o cliente lento ainda esteja recebendo o resultado.