Как заставить процесс Django аварийно завершать работу при ошибке импорта представления?

У меня была проблема в производстве, когда один процесс apache Django выдавал ошибки ViewDoesNotExist из-за исключения, возникшего при загрузке соответствующего модуля представления. Исключение произошло из-за невероятно маловероятного события, которое произошло глубоко в цепочке импорта.

Когда произошла ошибка, этот процесс просто продолжал обслуживать ошибки ViewDoesNotExist, так как не удалось импортировать представление.

Я бы предпочел, чтобы для обработки непредвиденных будущих ошибок процесс просто зависал из-за ошибки импорта. Если бы процесс был перезапущен, эта ошибка была бы вызвана не более чем одним запросом.

Есть ли способ изменить это поведение? (без изменения исходного кода django)


person UsAaR33    schedule 04.08.2012    source источник


Ответы (1)


Я так не думаю. Сам Django разработан как фреймворк с тестовым сервером (и как сервер он не должен давать сбоев, кроме как в экстремальных обстоятельствах). Согласно ОП, проблема связана с состоянием гонки при начальной загрузке Джанго. Я нашел ответ (решенный кем-то другим) здесь

person Snakes and Coffee    schedule 04.08.2012
comment
О, проблема с импортом возникла из-за того, что импортированный модуль пытался получить блокировку, которая не удалась из-за EDEADLOCK ... это очень редкое состояние гонки. Такие ошибки меня беспокоят в будущем. - person UsAaR33; 04.08.2012
comment
согласно code.djangoproject.com/ticket/18251, эта проблема может не существовать намного дольше - person Snakes and Coffee; 04.08.2012