В режиме демона отсутствует концепция постепенного перезапуска при касании файла сценария WSGI для принудительной загрузки.То есть, в отличие от самого Apache, который запускает новые дочерние процессы сервера Apache, ожидая, пока старые процессы завершат выполнение текущих запросов, для процессов-демонов mod_wsgi существующий процесс должен завершиться до запуска нового.
Последствия этого состоят в том, что mod_wsgi не может бесконечно ждать завершения текущих запросов.Если это так, то существует риск того, что, если все процессы демона будут связаны, ожидая завершения текущих запросов, клиенты увидят заметную задержку в обработке.
Однако на другом конце шкалыпроцесс демона не может быть немедленно уничтожен, так как это приведет к прерыванию текущих запросов.
Таким образом, существует промежуточное положение.Процесс демона будет ожидать завершения запросов, прежде чем завершится, но если они не были завершены в течение периода завершения работы, то процесс демона будет принудительно завершен, а активные запросы будут прерваны.
Период этоговремя отключения по умолчанию составляет 5 секунд.Его можно переопределить, используя опцию shutdown-timeout для директивы WSGIDaemonProcess, но следует должным образом учесть последствия его изменения.
Таким образом, в отношении этой конкретной проблемы, если у вас все еще активны долго выполняющиеся запросыкогда первый запрос приходит после того, как вы коснулись файла сценария WSGI, существует риск прерывания активных длинных запросов.
Следующее, что вы можете заметить, это то, что даже если нет долго выполняющихся запросови быстро завершает работу, затем все равно необходимо снова загрузить приложение WSGI в новом процессе.Время, которое потребуется, будет рассматриваться как задержка в обработке запроса.Насколько велика эта задержка, будет зависеть от платформы и вашего приложения.Самым худшим нарушителем, насколько мне известно, является время TurboGears.Django несколько лучше и лучше, если учесть, что время быстрого запуска - это легкие микро-фреймворки, такие как Flask.
Обратите внимание, что любые новые запросы, поступающие во время этих задержек выключения и запуска, не должны теряться.Это связано с тем, что сокет прослушивателя HTTP имеет определенную глубину, и соединения ожидают в очереди в ожидании.Если количество поступающих запросов огромно, и эта очередь заполняется, вы увидите в браузере ошибки, связанные с отклонением соединения.