Как именно происходит запрос Python (Django)? это должно повторно проанализировать всю кодовую базу?
С помощью скриптового языка, такого как python (или php), вещи не компилируются в байт-код, как в.net или java.
Значит ли это, что при каждом запросе он должен проходить через все приложение и анализировать / компилировать его? Или хотя бы весь код, необходимый для данного стека вызовов?
2 ответа
С помощью скриптового языка, такого как python (или php), вещи не компилируются в байт-код, как в.net или java.
Неправильно: все, что вы import
в Python компилируется в байт-код (и сохраняется как .pyc
файлы, если вы можете записать их в каталог, содержащий исходный код, который вы импортируете - стандартные библиотеки & c обычно предварительно скомпилированы, в зависимости от выбора установки, разумеется). Просто оставьте основной сценарий коротким и простым (импортирующим какой-либо модуль и вызывающим в нем функцию), и вы будете везде использовать скомпилированный байт-код. (Компилятор Python спроектирован так, чтобы быть чрезвычайно быстрым - с учетом того, что он не выполняет много других разумных оптимизаций - но вообще избегать его все же быстрее;-).
При запуске в качестве CGI, да, весь проект должен быть загружен для каждого запроса. FastCGI и mod_wsgi хранят проект в памяти и общаются с ним через сокет.