Замените все синхронные операции типа writeFileSync на асинхронные аналоги, чтобы они не блокировали поток обработки, и отправляйте ответ через 30-40 секунд, даже через 3-5 минут нормально, это будет работать как лонг-пулинг, т.е. пока HTTP таймаут не закончится. Только нельзя блокировать поток обработки, иначе параллельные запросы не будут приниматься.
UPD: и еще заметил, что req.rawBody это у Вас функция, которая читает и склеивает все чанки файла, так вот она без колбека, Вы ее сделали синхронной тоже, это плохо, посмотрите как я получаю серию чанков и клею их:
impress.application.js#L479-L489 В общем, видно, что Вы только частично освоили асинхронный подход и смешиваете его с синхронным, что и не позволяет сделать параллельную обработку нескольких таких запросов в одном потоке ноды. Использовать файловые потоки и pipe тут не обязательно, но можно. Только тогда нужно запус питона повесить на событие req.on('end',...) или file.res.on('finish',...) того FileStream в который пайпите req.