Не знаю что там за тяжёлые задачи. Они хотя бы оформлены у вас как фоновые задачи? Тяжёлые задачи - это такие, которые сильно загружают ресурсы сервера (CPU, I/O, сеть) или которые длятся дольше, чем пользователь хотел бы ждать.
К тяжёлым запросам можно относить пред/пост-обработку каких-либо данных, генерацию отчётов для бизнес аналитики, т.е. операции, которые могут быть совершены без ожидания пользователем ответа.
Обычно их выносят в обработчик очередей (Gearman, Beanstalk, ZeroMQ, RabbitMQ, ...). А воркер очереди может быть написан на любом языке, если, допустим, используется протокол MsgPack. Также могут быть использованы Tarantool со встроенным языком Lua, а также Redis - в качестве хранилищ данных очередей.
То есть это переход с монолитного приложения на микросервисы.