Как именно происходит запрос Python (Django)? это должно повторно проанализировать всю кодовую базу?

С помощью скриптового языка, такого как python (или php), вещи не компилируются в байт-код, как в.net или java.

Значит ли это, что при каждом запросе он должен проходить через все приложение и анализировать / компилировать его? Или хотя бы весь код, необходимый для данного стека вызовов?

2 ответа

Решение

С помощью скриптового языка, такого как python (или php), вещи не компилируются в байт-код, как в.net или java.

Неправильно: все, что вы import в Python компилируется в байт-код (и сохраняется как .pyc файлы, если вы можете записать их в каталог, содержащий исходный код, который вы импортируете - стандартные библиотеки & c обычно предварительно скомпилированы, в зависимости от выбора установки, разумеется). Просто оставьте основной сценарий коротким и простым (импортирующим какой-либо модуль и вызывающим в нем функцию), и вы будете везде использовать скомпилированный байт-код. (Компилятор Python спроектирован так, чтобы быть чрезвычайно быстрым - с учетом того, что он не выполняет много других разумных оптимизаций - но вообще избегать его все же быстрее;-).

При запуске в качестве CGI, да, весь проект должен быть загружен для каждого запроса. FastCGI и mod_wsgi хранят проект в памяти и общаются с ним через сокет.

Другие вопросы по тегам