No momento, estamos mantendo um "servidor web" python caseiro, em que a geração de resposta para algumas solicitações pode demorar muito, principalmente devido a cálculos pesados - essas solicitações são basicamente postagens com tempos limite muito longos (pense em minutos a dezenas de minutos).
Um problema dessa arquitetura é que às vezes há a necessidade de cancelar uma solicitação - por exemplo, o usuário notou um erro ao configurar a solicitação. Atualmente, o cancelamento é outra solicitação, que cancela a solicitação de longa execução - mas há muitas lacunas, por exemplo, o que acontece se o cliente simplesmente fechar o site?
Atualmente, estamos planejando retirar a abominação doméstica de um servidor da Web e mudar para algo sensato - por exemplo, Flask sendo executado dentro de um IIS usando o wfastcgi. Por razões políticas, o IIS está configurado, portanto, mudar para algo como gunicorn fica fora da janela.
Todo o desenvolvimento parou nisso porque ninguém tem uma idéia de como eliminar os processos executados pelo (w) fastcgi - essa preocupação simplesmente não faz parte das especificações do fastcgi.
Meu sentimento é que uma tentativa de criar algo que incorpore isso é um erro - eu preferiria uma solução em que o servidor simplesmente transferisse essas tarefas intensivas de computação para algum servidor em segundo plano (flask + aipo?) E as pesquisas de front-end para isso.
Infelizmente, a solução antiga estava em vigor por tanto tempo que alguns desenvolvedores querem manter o comportamento a todo custo.
Não sendo um servidor de web, eu gostaria de algumas dicas / padrões de como seriam as soluções sensatas para esse problema.