Se o seu python foi bem escrito, e é decentemente modularizado, então não deve ser tão ruim.
O que você precisa fazer é olhar para o Aipo e usá-lo como uma fila de trabalhos.
Quando um usuário envia um arquivo para processamento, ele é enfileirado pelo Celery e depois processado no mesmo servidor ou por um nó de trabalho, quando os recursos estão disponíveis. O aipo é normalmente suportado pelo RabbitMQ ou pelo Redis como o intermediário de mensagens (servidor de filas real), e esses são relativamente fáceis de dimensionar.
No que diz respeito ao retorno de chamada "trabalho completo", há várias opções disponíveis, você ainda pode usar o e-mail ou pode consultar um serviço como Pusher para enviar notificações de volta ao navegador do usuário que fez o envio.
Os servidores são projetados para executar a 80-90% da carga da CPU, na verdade. Quero dizer, é aí que você está aproveitando ao máximo o poder que você coloca (meio).
Eu suspeito que você esteja hospedando isso em casa (daí o uplink lento do ADSL), e que pode ser apenas um desktop reutilizado, que não são adequados para ciclos de trabalho tipo servidor e carregamento.