Это действительно так?
Это зависит. Перезагрузка кода очень специфична для хостинга. Большинство серверов предоставляют какой-либо способ автоматической перезагрузки самого сценария WSGI, но стандартизации нет; действительно, вопрос о том, как объект приложения WSGI подключается к веб-серверу, сильно отличается в разных средах хостинга. (Вы можете просто создать один файл сценария, который работает как клей для развертывания CGI, mod_wsgi, passenger и ISAPI_WSGI, но это не совсем тривиально.)
Однако Python действительно борется с перезагрузкой модуля. Что проблематично для приложений WSGI, потому что любое нетривиальное веб-приложение будет инкапсулировать свою функциональность в модули и пакеты, а не в простые автономные сценарии. Оказывается, перезагрузка модулей довольно сложна, потому что, если вы reload()
используете их один за другим, они легко могут получить плохие ссылки на старые версии. В идеале дальнейший путь заключается в перезагрузке всего интерпретатора Python при обновлении любого файла, но на практике кажется, что некоторым расширениям C это не нравится, поэтому обычно это не делается.
Существует обходных путей для одновременной перезагрузки группы модулей, которая может надежно обновлять приложение при касании одного из его модулей. Я использую модуль развертывания, который делает это (который я не успел опубликовать, но могу забрать вам копию, если вам интересно), и он отлично работает для моих собственных веб-приложений. Но вам нужна небольшая дисциплина, чтобы убедиться, что вы случайно не начинаете оставлять ссылки на объекты ваших старых модулей в других модулях, которые вы не перезагружаете; если вы говорите о множестве сайтов, написанных третьими лицами, чей код может быть утечкой, это может быть не идеально.
В этом случае вы можете захотеть посмотреть на что-то вроде запуска mod_wsgi в режиме демона с группой приложений для каждой стороны и перезагрузки на уровне процесса и прикоснуться к файлу сценария WSGI при обновлении любого из модулей.
Вы правы жаловаться; это (и многие другие проблемы развертывания WSGI) могут быть связаны с некоторой помощью по стандартизации.