У меня есть установка uWSGI, в которой я запускаю динамический режим и добавляю в него приложения. Все приложения работают с одной и той же кодовой базой, но у каждого есть свой файл настроек. Он работает красиво.
Скажем, например, я хочу изменить настройку для одного приложения, которое уже было загружено. Есть ли способ заставить uwsgi перезагрузить приложение вместо перезапуска всего сервера uwsgi? В режиме императора я мог просто прикоснуться к файлу конфигурации. Как добиться аналогичного результата в динамическом режиме?
К сожалению, нет. Уничтожение субинтерпретатора Python (а также Perl или Lua) - довольно слабая операция, которая не может освободить многие вещи, что приводит к очень плохим результатам.
Например, общие модули python на основе C не могут быть безопасно освобождены (поскольку другие интерпретаторы могут ссылаться на них), а также другие проблемы, связанные с ОС, такие как открытые файловые дескрипторы и тому подобное.
Лучшее, что вы можете сделать, - это перезагрузить воркеров (используя трюки с цепной перезагрузкой для сокращения времени простоя).
Обратите внимание: вам нужно перезагружать только воркеры, а не весь экземпляр