Недавно я провел некоторое исследование по миграции сервисов без простоев. И мое решение не является языковым. Идея в том, что мы можем вывести состояние текущего сервиса, создать другой процесс, перенести описание состояния соединения в новый процесс и, наконец, завершить старый процесс. Как показано на следующей диаграмме:
Имея четко определенный формат описания абстрактного сервиса и протокол миграции, вы можете переносить любые виды сервисов из одного процесса в другой, что означает, что вы можете написать сервер на C ++ и перенести сервис на новый процесс, написанный на Python. без какого-либо отключения. Конечно, вы можете перенести свой сервис со старой версии на новую. Добавление / удаление / обновление классов не будет проблемой. Более подробно вы можете сослаться на мою статью
Миграция службы без простоя
Сложность такого рода техники заключается в том, что вам необходимо вывести все состояние работающей службы и загрузить их в другой процесс. Для большинства библиотек, которые вы можете найти, трудно получить внутреннее состояние этих классов, что означает, что вам, возможно, придется взломать их или написать свою собственную библиотеку. Передача состояния сервиса для сложных сервисов была бы кошмаром, но для простых сервисов это не имеет большого значения.